Koleżankom i Kolegom Radioamatorom, Krótkofalowcom,
Konstruktorom i Waszym Rodzinom – w tych trudnych czasach –
po dotkliwej awarii naszego forum
Pogodnego czasu po Bożym Narodzeniu,
Dosiego Nowego Roku
oraz Radosnych Trzech Króli

Życzy Zespół Home Made

Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Fork-Heńka... czyli jak sobie poradzić z DDS za pomocą ARDUINO
Rozmawiałem dzisiaj z Ryśkiem SP6IFN i zwrócił moją uwagę na pewien problem.
Otóż nasza synteza jest przystosowana do s-metra (pamiętajmy że to tylko wskaźnik) który pracuje z napięciem wyjściowym od 0V - 5V. Jest to oczywiście dość dużo, wiekszość konstrukcji pracuje na niższych napięciach.
Wobec tego przebudowałem program w taki sposób by można było zmienić ten zakres na 0V - 1.1V.
Zmiana ta realizowana jest za pomocą funkcji analogReference().
Minusem tego rozwiązania jest to ze nasza drabinka do obsługi przycisków też musi być przeprogramowana, bo zmiana napięcia referencyjnego dotyczy wszystkich wejść analogowych i przestała by działać.

A zatem:

W sekcji konfiguracyjnej mamy zmienną do wyboru napięcia odniesienia:
Kod:
const int bod_lvl = 0;                                //konfiguracja napięcia odniesienia 0 - 5V, 1 - 1.1V

Podczas startu procesora w funkcji setup ustawiamy odpowiednie napięcie:

Kod:
if(bod_lvl == 1){                             //tutaj przy starcie ustawiam właściwe napięcie odniesienia
    analogReference(INTERNAL);                  //dla ATmega168 i ATmega328, INTERNAL = 1.1V w arduino mega wpisujemy INTERNAL1V1
  }

No i na koniec fragment kodu w którym reagujemy na dane z przetwornika, czyli jak teraz wygląda nasza funkcja obsługująca przyciski, już po zmianach:

Kod:
else if(adc_value > 10 && adc_value < 120 && bod_lvl == 0){   //drugi przycisk napiecie odniesienia 5V
        rit_button_pressed = true;
      }
      else if(adc_value > 120 && adc_value < 220 && bod_lvl == 0){  //trzeci przycisk napiecie odniesienia 5V
        dim_button_pressed = true;
      }
      else if(adc_value > 220 && adc_value < 320 && bod_lvl == 0){  //czwarty przycisk napiecie odniesienia 5V
        vfo_button_pressed = true;
      }
      else if(adc_value > 350 && adc_value < 500 && bod_lvl == 1){   //drugi przycisk napiecie odniesienia 1.1V
        rit_button_pressed = true;
      }
      else if(adc_value > 500 && adc_value < 800 && bod_lvl == 1){  //trzeci przycisk napiecie odniesienia 1.1V
        dim_button_pressed = true;
      }
      else if(adc_value > 800 && adc_value < 1000 && bod_lvl == 1){  //czwarty przycisk napiecie odniesienia 1.1V
        vfo_button_pressed = true;
      }

W chwili obecnej na atmedze 328 nasz program zajmuje: 17 012 bajtów z 30 720 bajtów, czyli własnie przekroczyliśmy połowę pamięci procesora.
No Panowie ciekaw jestem waszych postępów w pracach, ktoś poza Rysiem już napędza Złomkiem jakieś radio?


Załączone pliki
.zip   zlomek_v_1_0_16-141119a.zip (Rozmiar: 8.43 KB / Pobrań: 1,137)
...przede wszystkim nie zakłócać...
Odpowiedz


Wiadomości w tym wątku

Skocz do:


Użytkownicy przeglądający ten wątek: 1 gości