PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Piezo an MCU



Import-Script
26.01.2003, 13:40
Hallo... <BR>Wie könnte man an den 89C2051 einen Piezo anschliessen, der dann verschiedene Töne von sich gibt? <BR>PWM? mit Spule und Trasistor? <BR>Im Netz gibs dar&uuml;ber wenig. <BR> <BR>Ronnie <BR>

Import-Script
27.01.2003, 02:15
Hat sich erledigt... <BR>Bin f&uuml;ndig geworden.. <BR>

Import-Script
04.06.2003, 02:54
Hallo, <BR> <BR>was hast du denn herausgefunden? Ich habe auch noch solche Teile rumliegen und w&uuml;rde die gerne mal anschliessen. Hast du da einen Link etc.? <BR> <BR>Danke, <BR>Michael

Import-Script
08.06.2003, 01:08
Ist eigentlich ganz simple <BR>Piezzo auf PortX.X mit Plus <BR>Minus an Masse <BR>Dann den PortX.X einfach takten <BR>Impuls folge und takt-länge ergeben die Freq. des tones. <BR>einfach mal ein bischen rumprobieren. <BR>Source und Links finde ich im moment nicht.. sorry <BR>Ronnie <BR> <BR> <BR> <BR> <BR> <BR>Ronnie <BR>

Import-Script
08.06.2003, 02:45
Ich hatte die Tage exakt die selbe Idee <img src="http://progshop.com/elektronik/diskussion/clipart/happy.gif" border=0> <BR> <BR>...allerdings auf nem AVR, getaktet mit 8MHz. Ich stelle den Output-Compare auf den Wert X, bei erreichen des wertes wird der OC-Pin getoggled und der Zähler zur&uuml;ck gesetzt. <BR> <BR> <BR> <BR>// ================================================== ============= <BR>// Copyright <BR>// ================================================== ============= <BR> <BR>// ================================================== ============= <BR>// Includes <BR>// ================================================== ============= <BR> <BR>#include &#60;avr/io.h&#62; <BR> <BR> <BR>// ================================================== ============= <BR>// Defienitions <BR>// ================================================== ============= <BR> <BR>#define Hz&#40;x&#41; 8000000 / &#40;x &#42; 2&#41; <BR> <BR>// ================================================== ============= <BR>// Functions <BR>// ================================================== ============= <BR> <BR>void Sound&#40;unsigned int uiFreq&#41; <BR>{ <BR> if &#40;uiFreq&#41; <BR> { <BR> // Timer <BR> TCCR1A = &#40;1&#60;&#60;COM1A0&#41;; <BR> TCCR1B = &#40;1&#60;&#60;CTC1&#41; | &#40;1&#60;&#60;CS10&#41;; <BR> <BR> // Compare <BR> OCR1AH = &#40;uiFreq &#62;&#62; 8&#41;; <BR> OCR1AL = &#40;uiFreq &amp; 0xFF&#41;; <BR> } <BR> else <BR> { <BR> TCCR1B = 0; <BR> } <BR>} <BR> <BR> <BR>void NoSound&#40;void&#41; <BR>{ <BR> TCCR1B = 0; <BR>} <BR> <BR> <BR>// ================================================== ============= <BR>// Interrupts <BR>// ================================================== ============= <BR> <BR>/&#42; SIGNAL &#40;SIG_INTERRUPT0&#41; <BR>{ <BR> volatile unsigned char i, j; <BR> <BR> Sound&#40;2000&#41;; <BR> <BR> for &#40;i = 255; i &#62; 0; i--&#41; <BR> for &#40;j = 255; j &#62; 0; j--&#41;; <BR> <BR> NoSound&#40;&#41;; <BR>} <BR> <BR> <BR>SIGNAL &#40;SIG_INTERRUPT1&#41; <BR>{ <BR> volatile unsigned char i, j; <BR> <BR> Sound&#40;8000&#41;; <BR> <BR> for &#40;i = 0xFF; i &#62; 0; i--&#41; <BR> for &#40;j = 0xFF; j &#62; 0; j--&#41;; <BR> <BR> NoSound&#40;&#41;; <BR>} &#42;/ <BR> <BR> <BR>// ================================================== ============= <BR>// Main <BR>// ================================================== ============= <BR> <BR>int main&#40;void&#41; <BR>{ <BR> volatile unsigned char i, j, k; <BR> <BR> // Directions <BR> DDRA = 0x00; <BR> DDRC = 0x00; <BR> DDRD = &#40;1&#60;&#60;PD5&#41;; <BR> <BR> // Pullups <BR> PORTA = 0xFF; <BR> PORTC = 0xFF; <BR> <BR> // Play Starsound <BR> for &#40;k = 3; k &#62; 0; k--&#41; <BR> { <BR> Sound&#40;2000&#41;; <BR> <BR> for &#40;i = 255; i &#62; 0; i--&#41; <BR> for &#40;j = 255; j &#62; 0; j--&#41;; <BR> <BR> NoSound&#40;&#41;; <BR> <BR> for &#40;i = 255; i &#62; 0; i--&#41; <BR> for &#40;j = 128; j &#62; 0; j--&#41;; <BR> } <BR> <BR> <BR> for &#40;;;&#41; <BR> { <BR> if &#40;i = ~PINA&#41; <BR> { <BR> if &#40;PINC &amp; 0x01&#41; <BR> { <BR> switch &#40;i&#41; <BR> { <BR> case 0x80: Sound&#40;32000&#41;; // SW7 <BR> break; <BR> case 0x40: Sound&#40;16000&#41;; // SW6 <BR> break; <BR> case 0x20: Sound&#40;8000&#41;; // SW5 <BR> break; <BR> case 0x10: Sound&#40;2000&#41;; // SW4 <BR> break; <BR> case 0x08: Sound&#40;1000&#41;; // SW3 <BR> break; <BR> case 0x04: Sound&#40;500&#41;; // SW2 <BR> break; <BR> case 0x02: Sound&#40;250&#41;; // SW1 <BR> break; <BR> case 0x01: Sound&#40;100&#41;; // SW0 <BR> break; <BR> } <BR> } <BR> else <BR> { <BR> switch &#40;i&#41; <BR> { <BR> case 0x80: Sound&#40;2000&#41;; <BR> break; <BR> case 0x40: Sound&#40;2001&#41;; <BR> break; <BR> case 0x20: Sound&#40;2002&#41;; <BR> break; <BR> case 0x10: Sound&#40;2003&#41;; <BR> break; <BR> case 0x08: Sound&#40;2004&#41;; <BR> break; <BR> case 0x04: Sound&#40;2005&#41;; <BR> break; <BR> case 0x02: Sound&#40;2006&#41;; <BR> break; <BR> case 0x01: Sound&#40;0&#41;; <BR> } <BR> } <BR> <BR> for &#40;i = 10; i &#62; 0; i--&#41; <BR> for &#40;j = 255; j &#62; 0; j--&#41; <BR> for &#40;k = 255; k &#62; 0; k--&#41;; <BR> <BR> NoSound&#40;&#41;; <BR> } <BR> } <BR> <BR> return 0; <BR>} <BR>

Import-Script
16.06.2003, 20:03
Dank euch beiden, ich habs zwar noch nicht ausprobiert, aber ich weiss zumindest, wie es gehen sollte. So ein Piezo-Teil scheint wie ein Lautsprecher zu funktionieren, oder? Einfach ne Frequenz drauf und das Teil gibt Töne von sich... <BR> <BR>Gr&uuml;ße <BR>Michael

Import-Script
17.06.2003, 07:42
Prinzipiell schon, <BR>nur ein Piezo hat eine Resonanzfrequenz wo er sehr laut ist und je weiter man davon weggeht, wird er umso leiser, bei der Oberfrequenzen wird er dann wieder lauter. <BR>Alternativ kann man aber ganausogut nen Mini-Lautsprecher an den µC anschließen