Experimente mit dem Attiny13 und einem 10-Bit-DA-Wandler Max515


von Hermann Nieder, DL6PH
ELO 2009
Elektronik-Labor  Labortagebuch  ELO  



Neulich war es mir gelungen, mit dem Attiny13 aus dem Lernpaket MSR mit dem PC[1] einen vorhandenen seriellen 10-Bit-DA-Wandler MAX515 anzusteuern. Als ich an einem anderen Tag ein Fachbuch von Frank Sichla [2] durchblätterte, in dem u. a. auch ein einfacher HF-Wobbler dargestellt ist, hatte ich den Einfall, die Schaltung aus einem anderen ELO-Beitrag [3]  zur Ansteuerung des VCO-Ics  74LS624 sowie diejenige des Frequenzteilers erneut zu verwenden, um damit einen solchen Wobbler aufzubauen, um  Resonanzkurven von Parallelschwingkreisen, Bandfiltern u. ä. darstellen zu können. Ich wollte dabei allerdings ohne ein Oszilloskop auskommen und die grafische Darstellung unter Windows mit Visual Basic verwirklichen. Mit dieser Software wollte ich auch die Ansteuerung der Mikrocontroller durchführen , da mir die Steuerung des MAX515 in BASCOM AVR gelungen war. Dass dies recht gut gelungen ist, ist auf dem folgenden Screenshot  zu erkennen. Es  sind gerade die Resonanzkurven eines Bandfilters für 455kHz und eines keramischen Filters CFM-455 aufgenommen worden.


Der Frequenzteilerausgang ist in diesem Projekt anders als in dem oben erwähnten ELO-Beitrag an PB0 angeschlossen, damit die beiden  Pins ADC2 und ADC3 für Spannungsmessungen zur Verfügung stehen. Ich wollte für das Projekt nur zwei der kleinen Mikrocontroller verwenden.
Es wird die Spannung am DA-Wandlerausgang gemessen  sowie diejenige am Ausgang einer Verdopplerschaltung zur HF-Spannungsmessung. Anregungen für diese Schaltung fand ich in einem Fachbuch von Frank Sichla[4].

Das Listing  Frequenz.asm von der CD zum o. a. Lernpaket passte ich für diesen Zweck  an.

Dies hier sind die Änderungen, die ich darin vornahm:
...
  .def   B      = r25
...
Anfang0:
        sbi    ddrb,TXD  ; stand hinter Anfang
        rcall AdcInit       ; neu

Auswahl:                    ;neu
        rcall RdCOM      ;
        mov   B,A
        cpi   A,249      ; bei 249 wird dieser ATtiny13 angesprochen
        brne  zurueck    ;
        rcall RdCOM
        mov   B,A
        cpi   A,1        ; bei 1 Frequenzmessung
        brne  zwei
         
        rjmp  Anfang 
             
zwei:  
        mov   A,B
        cpi   A,2        ; bei 2   ADC2 einlesen
        brne  drei

        rcall  RdADC2    ; AD-Byte lesen
        mov    A,B
        rcall  WrCOM       ; und senden

drei:
        cpi   A,3         ; bei 3 ADC3 einlesen
        brne  zurueck
       
        rcall RdADC3      ; AD-Byte lesen
        mov   A,B
        rcall  WrCOM
         
zurueck:                 ;
        rjmp Auswahl     ;


Anfang: 

...

Z1:     sbic   pinb,0      ; war sbic pinb.4       
        rjmp   Z2
                         
        cpi    sek,1
        brsh   Z4
        rjmp   Z1
Z2:     sbis   pinb,0   ; war sbis pinb.4
        rjmp   Z3

...

AdcInit:
        ldi   B,3         ;Clock / 4
        out   ADCSRA,B   
        sbi   ADCSRA,ADEN ;AD einschalten
        ret
RdADC2: ldi   B,2
        rjmp  weitADC

RdADC3:
        ldi   B,3
weitADC:
        out   ADMUX,b
        sbi   ADMUX,ADLAR   ;Left adjust
        sbi   ADCSRA,ADSC   ;Wandlung starten
       
ADrdy:
        sbic  ADCSRA,ADSC  
        rjmp  ADrdy
        sbi   ADCSRA,ADSC
ADrdyb:
        sbic  ADCSRA,ADSC  
        rjmp  ADrdyb
        in    B,ADCH
        ret

Die o. a. Abwandlungen des ursprünglichen Listings machen es möglich, dass der für die Frequenzmessung und die beiden Spannungsmessungen vorgesehne Attiny13  nur bei Empfang eines Befehlsbytes 249 und eines anschließenden Folgebytes 1 die Frequenz an Pin PB0 misst und darauf zwei Bytes für deren Betrag an den PC übermittelt. Wird diesem nach dem Byte  249  eine 2  gesendet, wird die Spannung am Pin ADC2 gemessen und dafür ein Byte übertragen, während bei 249 und einer 3 eine Messung an ADC3 erfolgt und dafür ein Byte an den PC gesendet wird. Die Pins PB2 beider Mikrocontroller sind jeweils über einen Widerstand von 100k an Pin TXD der Platine des Lernpakets MSR mit dem PC [1] angeschlossen. Bei dem ATTiny13, der  den seriellen DA-Wandler ansteuert, entfällt der Widerstand zwischen seinem Pin PB1 und dem Anschluss RXD der Platine des o. a. Lernpakets, da von ihm keine Rückmeldung an den angeschlossenen PC erfolgt.
 
Dies ist der Schaltplan für die  Ansteuerung des DA-Wandlers durch den einen der beiden Mikrocontroller.




Dieser muss zuerst das Byte 248 und anschließend nacheinander das Highbyte und das Lowbyte für den auszugebenden DA-Wert vom PC empfangen, bevor er den MAX515 aktivieren kann. Alle anderen Befehlsbytes werden durch das Programm  in BASCOM AVR  „übersehen“.

Es werden vom Mikrocontroller zuerst nacheinander die Bits 9 und 8 des Highbytes und dann die Bits 7 bis 0 des Lowbytes  sowie zwei zusätzliche Dummybits mit dem Taktsignal SCLK an DIN des Wandler-Ics weitergegeben. Als Anregungen für die Programmgestaltung dienten mir ein Fachbuch von Dieter Bitterle[5] sowie die Datenblätter des MAX515. 

Der Vorteil des Mehraufwands mit dem 10-Bit-DA-Wandler  besteht für mich darin, dass seine Ausgangsspannung wegen der um den Faktor vier höheren Auflösung feiner eingestellt werden kann als die an einem RC-Tiefpassfilter zur Verfügung stehende   Spannung  hinter einem  der PWM-Ausgänge des Attiny13.



Auf diesem Bild ist die mit dem Wobbler aufgenommene Resonanzkurve eines auf das 80-m-Amateurfunkband abgestimmten Schwingkreises dargestellt. Das Visual Basic Programm kann z. B. folgendermaßen bedient werden: Nach dem Start wird  für die angeschlossene Platine des Lernpakets MSR  mit dem PC [1] die COM-Schnittstelle ausgewählt und der Betrag der gemessenen stabilen Gleichspannung  von 5 V im Betrieb bei angeschlossener Schaltung  mit dem Digitalmultimeter überprüft und ihr Wert im Textfeld neben dem Schaltknopf „Open COM“  eventuell abgeändert.

Mit dem längeren der beiden Schieberegler lässt sich die Ausgangsspannung  des DA-Wandlers, der das VCO-IC über einen als Spannungsfolger geschalteten Operationsverstärker ansteuert und dessen Frequenz einstellt, ändern. Unter dem Schieberegler wird die Stellung des Schiebers und die (berechnete) Größe der Ausgangsspannung angezeigt und ihr wirklicher an ADC2 gemessener Wert zusätzlich oben in einem Textfeld fortwährend angegeben. Hat der äußere Kondensator am 74LS624  eine Kapazität von 100pF, so lässt sich das VCO-Ic in einem Bereich von ca. 1,7 bis 11,7 MHz   abstimmen.

Mit dem rechten Schieberegler wird die Empfindlichkeit der Spannungsanzeige so eingestellt,  dass beim zu untersuchenden Schwingkreis im Resonanzfall wegen der späteren grafischen Darstellung unten im Bildfeld der maximal darstellbare Spannungswert von 5 V nicht überschritten wird. Der Betrag der um den eingestellten Faktor vervielfachten gemessenen relativen HF-Spannung wird in einem Textfeld dargestellt. Dabei dient eine mit einem Figurenfeld gebildete rote Bandanzeige als Hilfe. Die Länge des Bandes entspricht der Größe der Spannung.

In den beiden Textfeldern rechts neben dem Schaltknopf „RESET“ lassen sich für den linken Schieberegler die Anfangs- und Endposition für den Wobbelvorgang einstellen. Im Feld rechts daneben wird die Schrittweite für die Positionsänderung festgelegt.

Für die grafische Darstellung des Frequenzgangs des zu untersuchenden Objekts im Bildfeld unten wird in den beiden Textfeldern darunter der Anfangs- und Endwert in Hunderterbeträgen , z. B. hier 300 und 500, festgelegt. Die Farbe der darzustellenden Linie lässt sich mit dem Schieberegler rechts daneben von 0 bis 15 einstellen.

In ihr kann nach Abschluss des Wobbelvorgangs im Zeichenfeld rechts oben nach Drücken eines der Schaltknöpfe in ein Textfeld ein kurzer Hinweis zur Erläuterung der grafischen Darstellung eingegeben werden.Da im Beispiel ein äußerer Kondensator mit der Kapazität von 100 pF (Frequenzbereich von ca. 1,7 bis 11,7 MHz) verwendet wird, ist das Optionsfeld anzuklicken, worauf durch das Erscheinen eines roten Hinweises „X 10“ rechts im Zeichenfeld kenntlich gemacht wird, dass der an der Frequenzachse abzulesende Wert mit dem Faktor 10 zu multiplizieren ist.
  
Links neben dem Bildfeld kann durch Eingeben einer geeigneten Zahl, wie hier z. B. 300,  eine Verschiebung  der Darstellung des Frequenzgangs des angeschlossenen Schwingkreises nach links festgelegt werden. Ein geeigneter ganzer Zahlenwert im Feld darüber bestimmt die „Dehnung“ der beschrifteten Frequenzachse. Das Textfeld über diesem erlaubt eine Festlegung der Linienbreite für die grafische Darstellung. Nachdem die gewünschten Werte eingetragen worden sind, wird zur Beschriftung und Skaleneinteilung der Schaltknopf „Freq.-Achse“ gedrückt und anschließend der Wobbelvorgang durch Betätigen von „Wobbeln Ein“ gestartet. Er lässt sich mit dem Schaltknopf „Wobbeln Aus“ beenden. Mit „RESET“ wird der Schieberegler wieder in die durch das Textfeld daneben festgelegte Position gebracht, und ein weiterer Wobbelvorgang  kann eventuell nach Auswahl einer anderen Liniefarbe gestartet werden. In einem Listenfeld werden durch das Programm neben der Position des Schiebereglers die Frequenz und die gemessene relative HF-Spannung eingetragen. Der Schwingkreis für das 80m-Band und die beiden anderen Filter, deren Frequenzgänge im Bild ganz oben dargestellt sind, wurden jeweils über einen  Widerstand von 10 k an einen  der Inverter-Ausgänge, der wie in der in dem erwähnten anderen ELO-Beitrag [3] dargestellten Schaltung das Ausgangssignal des VCO-Ics puffert, angeschlossen. Auch eine andere, z. B. niederohmige Kopplung ist mit etwas mehr Schaltungsaufwand sicher möglich.  Eventuell lässt sich der freie Pin des einen Mikrocontrollers dafür verwenden, über ein kleines Relais den äußeren Kondensator am VCO-IC, dessen Kapazität den Frequenzbereich des 74LS624 festlegt, umzuschalten.

Mit dem oben beschriebenen Projekt habe ich eine recht brauchbare, kostengünstige  Möglichkeit z. B. für die Beurteilung von Schwingkreisen und Bandfiltern zur Hand, die sicher auch, wie ich finde, für andere bastelnde Funkamateure und Hobbyelektroniker interessant ist. Ein Markengeber ist nicht nötig, da im Listenfeld nachgesehen werden kann, bei welcher Frequenz sich welcher relativer HF-Spannungswert eingestellt hat.

Dies ist die komplette Schaltung, die probeweise auf kleinen Steckboards aufgebaut wurde. Mit ihr wurden die in den beiden Screenshots dargestellten Frequenzgänge aufgezeichnet. Es fehlt der Übersichtlichkeit wegen rechts im Bild nur die kleine erwähnte Schaltung zur relativen HF-Spannungsmessung.





Programmlistings hier herunterladen und für eigene Zwecke umgestalten und weiterentwickeln. 0911DA10bit.zip


Elektronik-Labor  Labortagebuch  ELO