| Weitere Artikel aus dem Elo-Magazin |
Experimente mit dem Attiny13 und einem 10-Bit-DA-Wandler Max515
von Hermann Nieder, DL6PH
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.
| Ganzen Artikel lesen... | ![]() |

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.
'T13_DA10_2.bas
'Ansteurung eines seriellen 10-Bit-DA-Wandlers MAX515
$regfile = "attiny13.dat"
$crystal = 1200000
Baud = 9600
Dim Daten As Byte
Dim Da_hi As Byte
Dim Da_lo As Byte
Dim I As Byte
Dim Din_dt As Byte
Open "comb.1:9600,8,n,1,INVERTED" For Output As #1
Open "comb.2:9600,8,n,1,inverted" For Input As #2
Din Alias Portb.3 'Pins des MAX515
Cs Alias Portb.4
Sclk Alias Portb.0
Config Portb.3 = Output
Config Portb.4 = Output
Config Portb.0 = Output
Din = 1
Cs = 1
Sclk = 0
Do
Auswahl:
Get #2 , Daten
If Daten = 248 Then ' nur bei 248 Sprung nach Weiter
Goto Weiter
End If
Goto Auswahl
Weiter:
Reset Cs
Get #2 , Daten
Da_hi = Daten
Get #2 , Daten
Da_lo = Daten
Din_dt = Da_hi And 2 ' nur Bit 0 und 1
Shift Din_dt , Right 'Bit 9
Gosub Bitaus
Din_dt = Da_hi And 1 'Bit 8
Gosub Bitaus
Schieben:
For I = 0 To 7 'war 7
Din_dt = Da_lo And 128 '!
Din_dt = Din_dt / 128
Gosub Bitaus
Shift Da_lo , Left '!
Next I
Reset Sclk ' 2 Dummy-Bits
Waitms 2
Reset Din
Waitms 2
Set Sclk
Reset Sclk
Waitms 2
Set Sclk
Set Cs
Waitms 2
Set Sclk
Waitms 2
Set Din
Loop
Bitaus:
If Din_dt = 0 Then
Reset Sclk
Waitms 2
Reset Din
Waitms 2
Set Sclk
End If
If Din_dt = 1 Then
Reset Sclk
Waitms 2
Set Din
Waitms 2
Set Sclk
End If
Return
End
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.
Programmlistings hier herunterladen und für eigene Zwecke umgestalten und weiterentwickeln. DA10bit.zip
Literatur, Bezugsquellen:
[1] B. Kainka „Lernapket MSR mit dem PC", www.franzis.de, 2009
[2] Frank Sichla „Schaltungssammlung Mess- und Prüftechnik", www.franzis.de, 2009
[3] www.elo-web.de , Beitrag: Experimente mit dem Attiny13 und einem VCO-IC 74LS624
[4] Frank Sichla, „Hochfrequenz Messpraxis", www.franzis.de, 2007
[5] Dieter Bitterle „Elektronik-Experimente mit dem PC", Franzis-Verlag, 1997
[6] Datenblätter der verwendeten ICs
[7] www.segor.de














