Odpowiedz 
 
Ocena wątku:
  • 6 Głosów - 4 Średnio
  • 1
  • 2
  • 3
  • 4
  • 5
Fork-Heńka... czyli jak sobie poradzić z DDS za pomocą ARDUINO
SQ9MDD Offline
Rysiek
****

Liczba postów: 380
Dołączył: 01-02-2009
Post: #173
RE: 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ń: 467)

...przede wszystkim nie zakłócać...
19-11-2014 17:11
Odwiedź stronę użytkownika Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
Odpowiedz 


Wiadomości w tym wątku
RE: Fork-Heńka... czyli jak sobie poradzić z DDS za pomocą ARDUINO - SQ9MDD - 19-11-2014 17:11

Skocz do:


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