Forum: Mikrocontroller und Digitale Elektronik Piezo an Atmega`?


von Manfred S. (Firma: Manfred) (xfred343)


Lesenswert?

Hi,

hab folgendes Programm:

1) OC1A (Pin PD.5) Tonausgang 1
(derzeit über D.5 und ULN2803 an Lautsprecher)
2) OC1B (Pin PD.4) Tonausgang 2
(derzeit über D.5 und ULN2803 an Lautsprecher)

Beide Oszis steuern ganz unterschiedliche Töne an 2 unterschiedlichen 
Lautsprechern aus (2 unterschiedlich platzierte Klingeln).

Jetzt würde ich gerne auf der Platine beide Töne an einem einzigen Piezo 
zur Kontrolle ausgeben. Geht das mit vertretbarem Aufwand oder soll ich 
gleich 2 Piezos montieren? (Stört mich einfach konzeptionell).

Kann man die Signale zu einem Piezo so zusammenführen, ohne dass die 
Einzelsignale an den Lautsprechern verfälscht werden?

von qs (Gast)


Lesenswert?

Was genau möchtest du denn mit deinem Programm erzielen?
Welecher Controller wird eingesetzt?
...
basics fehlen hier.

Prinzipiell kannst du doch über einen Timer hintereinander deine Samples 
durchlaufen lassen.
Aber da ich nicht weiß, was genau dein Ziel ist, könnte das aufgrund von 
Rätselraten auch ein Schuss in den Ofen sein.

Gruß

von Weingut P. (weinbauer)


Lesenswert?

ich frage mich wie Du 2 Töne gleichzeitig mit einem Timer ausgeben 
willst ... das einzig änderbare ist der Timerstart, der für beide OCR 
gleichermaßen gilt, der Timer überlauf ist fix, das Output compare 
kannst Du verschieben, aber dadurch ändert sich nur das Tastverhältniss, 
nicht die Frequenz der beiden Ausgänge ... oder bin ich da jetzt falsch?

von Manfred S. (Firma: Manfred) (xfred343)


Lesenswert?

Hallo qs,

danke für die Info,
hab einen Atmega644, die Töne gehen alles schon, das ist nicht das 
Problem, es werden nur 2 unterschiedliche Kanäle=Lautsprecher mit 
unterschiedlichen Tönen angesteuert (manchmal gleichzeitig, manchmal 
hintereinander) - PIND4. und D5 werden mit Timer0 bzw. Timer1 gesteuert, 
als Treiber dienen mehrere Kanäle vom ULN2803. Dahinter sind die beiden 
8 Ohm Lautsprecher.


ich hätt auf der Platine gerne eine Kontrollausgabe mit einem einzigen 
Piezo. Weiß nur nicht, wie ich das elektronisch anschließe.

Bei Gleichspannung wärs ja kein Problem, Diode von D4 und D5 ergeben 
quasi eine oder-Schaltung und dahinter eine LED, aber bei Tonausgabe?

von Manfred S. (Firma: Manfred) (xfred343)


Lesenswert?

Fhutdhb Ufzjjuz schrieb:
> ich frage mich wie Du 2 Töne gleichzeitig mit einem Timer ausgeben
> willst ... das einzig änderbare ist der Timerstart, der für beide OCR
> gleichermaßen gilt, der Timer überlauf ist fix, das Output compare
> kannst Du verschieben, aber dadurch ändert sich nur das Tastverhältniss,
> nicht die Frequenz der beiden Ausgänge ... oder bin ich da jetzt falsch?

Ja, danke - war leider mein Fehler, meinte natürlich die Ausgänge PIND.5 
und PIND.6 von Timer1 bzw. Timer2

Das Timing übernimmt dann Timer0 (wenn es die Hauptschleife übernimmt, 
könnte man ja sogar 3-stimmig ausgeben,da auch Timer0 CTC beherrscht!)

Hier- wenns interessiert - der Programmcode für 2 unterschiedliche Töne 
für den Atmega 644 mit Registerhandling, beide im CTC-Modus
1
$regfile = "m644def.dat"                       'ATmega8-Deklarationen
2
$crystal = 8000000                             '8 MHz-Quarz
3
Ddrd.5 = 1                                                  'OC1A
4
Ddrd.6 = 1                                                  'OC2B
5
Tccr2a = &B00010010                                    'OC2 Toggle, CTC on
6
Tccr2b = &B00000111                                    'Prescaler =1024
7
Ocr2b = 35 'Frequenzcounter für OC2B
8
Tccr1a = &B01000000                             'OC1A Togglemode on
9
Tccr1b = &B00001010                             'CTC bleibt, Prescaler =8
10
Ocr1ah = 1  'Frequenzcounter für OC1A, High Byte
11
Ocr1al = 220 'Low Byte
12
Sreg.7 = 1                                    'Interrupts global freigeben
13
Do
14
Loop

Aber meine Frage geht ja in eine andere Richtung, normalerweise gebe ich 
dann nicht die Töne parallel aus, daher hätte ich auf der Platine nur 1 
Piezo als "Kontrollmonitor" verwendet - wie geht es elektrisch, dass die 
Ausgangssignale von PIND.5 und PIND.6 getrennt bleiben und nur für den 
Kontrollpiezo zusammengeführt werden - ist eher ein elektronisches 
Problem

Danke für eure Vorschläge

von Jonathan S. (joni-st) Benutzerseite


Lesenswert?

Nimm zwei Widerstände, die dir die Signale mischen.
1
Sig 1----|=====|----    |\       Piezo
2
          1kOhm    |----|+\_____| || |__
3
Sig 2----|=====|----  --|-/ |   | || |  |
4
          1kOhm       | |/  |          ---
5
                      |     |
6
                      |-----|


Gruß
Jonathan

von Matthias (Gast)


Lesenswert?

Manfred S. schrieb:
> Bei Gleichspannung wärs ja kein Problem, Diode von D4 und D5 ergeben
> quasi eine oder-Schaltung und dahinter eine LED, aber bei Tonausgabe?

Der Controller gibt am Pin, egal ob eine LED oder ein Treiber 
angeschlossen ist, immer eine Spannung aus. Wo ist da der Unterschied?

von Ulrich (Gast)


Lesenswert?

Die Ausgänge des AVRs sind recht kräftig und die Piezos brauchen oft 
nicht viel Strom. Entsprechend kann man bein Zusammenschalten duch 
Widerstände eventuell auch auf den Extra Verstäker dahinter verzichten.

Man kann auch einfach den Piezo mit einem Widerstand in Reihen (z.B. 470 
Ohm) einfach ziwschen die beiden Signale schalten.

von Wolfgang H. (Firma: AknF) (wolfgang_horn)


Lesenswert?

Hi, Manfred,

die Ausgänge OC1A und OC1B liefern keine unterschiedlichen Frequenzen, 
sondern unterschiedliche Tastverhältnisse.
Denn OCR1A bestimmt die Periodenzeit in der Betriebsart CTC.

Die Tonfolge des Tatü-tata ereichst Du durch periodische Änderrung von 
OCR1A.

Die Ausgänge zweier Zähler kannst Du durchaus verbinden, indem Du jeden 
mit einer Diode an einen gemeinsamen Pull-Up Widerstand schaltest und 
den Piezo dort anklemmst.


Ciao
Wolfgang Horn

von Turbo T. (turbotoni)


Lesenswert?

Da so nen piezo ziemlich hochohmig ist kann man den auch zwischen die 
beiden Ausgänge hängen, also ein Anschluß an den einen Ausgang und den 
anderen Anschluß an den zweiten Ausgang.

MfG Turbotoni

von Manfred S. (Firma: Manfred) (xfred343)


Lesenswert?

Wolfgang Horn schrieb:
> Hi, Manfred,
>
> die Ausgänge OC1A und OC1B liefern keine unterschiedlichen Frequenzen,
> sondern unterschiedliche Tastverhältnisse.
> Denn OCR1A bestimmt die Periodenzeit in der Betriebsart CTC.
>
> Die Tonfolge des Tatü-tata ereichst Du durch periodische Änderrung von
> OCR1A.
Ja, stimmt eigentlich wird ja letzten Endes wie bei einer LED nur 
ständig ein- und ausgeschaltet - nur hört man das als Tonfrequenz.

Im Endausbau wird OC1A Sprachausgabe für einen Telefonfernschalter 
machen mit PCM, während OC2B eine Melodienklingel im CTC realisiert. 
Timer 3 liefert 6kHz und versorgt die PCM-Stimme und nebenbei ändert er 
"hie und da" die Werte für OCR2B entsprechend der "Tonleiter" für die 
Melodie.

>
> Die Ausgänge zweier Zähler kannst Du durchaus verbinden, indem Du jeden
> mit einer Diode an einen gemeinsamen Pull-Up Widerstand schaltest und
> den Piezo dort anklemmst.

Super, danke - das scheint mir die genialste Lösung zu sein. Da dann 
wirklich beide Ausgänge entkoppelt sind, bei nur Widerständen bin ich 
mir da nämlich nicht so sicher.
>
>
> Ciao
> Wolfgang Horn

von Manfred S. (Firma: Manfred) (xfred343)


Lesenswert?

Matthias schrieb:
> Manfred S. schrieb:
>> Bei Gleichspannung wärs ja kein Problem, Diode von D4 und D5 ergeben
>> quasi eine oder-Schaltung und dahinter eine LED, aber bei Tonausgabe?
>
> Der Controller gibt am Pin, egal ob eine LED oder ein Treiber
> angeschlossen ist, immer eine Spannung aus. Wo ist da der Unterschied?

Ja, danke Matthias, stimmt eigentlich so - da hab ich viel zu 
kompliziert gedacht, nur weil der Atmega so schnell schaltet das man es 
als Ton hört, ist es noch keine Wechselspannung - daher ist auch die 
Diodenentkoppelung wie sie jetzt auch Wolfgang vorgeschlagen hat eine 
gute Idee

von Sam (Gast)


Lesenswert?

Manfred S. schrieb:
> Im Endausbau wird OC1A Sprachausgabe für einen Telefonfernschalter
> machen mit PCM, während OC2B eine Melodienklingel im CTC realisiert.
> Timer 3 liefert 6kHz und versorgt die PCM-Stimme und nebenbei ändert er
> "hie und da" die Werte für OCR2B entsprechend der "Tonleiter" für die
> Melodie.

Warum mischt du die Kanäle nicht in Software? Einfach addieren.

von Manfred S. (Firma: Manfred) (xfred343)


Lesenswert?

Hi Sam,

jeder Kanal hat ja seinen eigenen Ausgang, einer geht mit Treiber 
ULN2803 und Übertrager an die Telefonleitung, der andere mit Treiber 
ULN2803 an einen Lautsprecher, 8 Ohm. Nur auf der Steuerplatine soll 1 
Piezo für beide Kanäle eingesetzt werden.

von Manfred S. (Firma: Manfred) (xfred343)


Angehängte Dateien:

Lesenswert?

So, hab jetzt die Schaltung getestet, das mit Dioden und 
Pullup-Widerstand geht zwar, wird aber recht leise, am besten 
funktioniert folgende Lösung:

einfach zwischen
Atmega Pin D.5, OC1A, PWM mit PCM-Sound, 4khz
Atmega Pin D.6, OC2B, CTC-Klingelton

einen Piezosummer, ohne Widerstand anschließen - geht
Interessanterweise werden beide Ausgänge dann unabhängig voneinander 
verstärkt - ein "Übersprechen" gibts nicht

hab aber noch eine Frage, Schaltung durch "Experimentieren" erzielt,
funktioniert einwandfrei, aber mir ist nicht ganz wohl dabei...
ich hätte zwischen Telefontrafo und Atmega noch gerne einen ULN 2003 
dazwischengeschaltet, nur der invertiert und damit wird der Ton am 
Telefon nur noch leiser..

Am Telefon hängt noch ein DTMF-MT8870 und eine selbst abhebende 
Gegensprechanlage - Ziel ist es, Zahlausgaben (PCM über PWM) über den 
Atmega ins Telefon einzuschleusen, das geht recht gut aber ein bisserl 
mulmig ist mir bei der Treiberschaltung...

Wer hat bessere Ideen?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.