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über wenig. <BR> <BR>Ronnie <BR>
Import-Script
27.01.2003, 02:15
Hat sich erledigt... <BR>Bin fü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ü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ück gesetzt. <BR> <BR> <BR> <BR>// ================================================== ============= <BR>// Copyright <BR>// ================================================== ============= <BR> <BR>// ================================================== ============= <BR>// Includes <BR>// ================================================== ============= <BR> <BR>#include <avr/io.h> <BR> <BR> <BR>// ================================================== ============= <BR>// Defienitions <BR>// ================================================== ============= <BR> <BR>#define Hz(x) 8000000 / (x * 2) <BR> <BR>// ================================================== ============= <BR>// Functions <BR>// ================================================== ============= <BR> <BR>void Sound(unsigned int uiFreq) <BR>{ <BR> if (uiFreq) <BR> { <BR> // Timer <BR> TCCR1A = (1<<COM1A0); <BR> TCCR1B = (1<<CTC1) | (1<<CS10); <BR> <BR> // Compare <BR> OCR1AH = (uiFreq >> 8); <BR> OCR1AL = (uiFreq & 0xFF); <BR> } <BR> else <BR> { <BR> TCCR1B = 0; <BR> } <BR>} <BR> <BR> <BR>void NoSound(void) <BR>{ <BR> TCCR1B = 0; <BR>} <BR> <BR> <BR>// ================================================== ============= <BR>// Interrupts <BR>// ================================================== ============= <BR> <BR>/* SIGNAL (SIG_INTERRUPT0) <BR>{ <BR> volatile unsigned char i, j; <BR> <BR> Sound(2000); <BR> <BR> for (i = 255; i > 0; i--) <BR> for (j = 255; j > 0; j--); <BR> <BR> NoSound(); <BR>} <BR> <BR> <BR>SIGNAL (SIG_INTERRUPT1) <BR>{ <BR> volatile unsigned char i, j; <BR> <BR> Sound(8000); <BR> <BR> for (i = 0xFF; i > 0; i--) <BR> for (j = 0xFF; j > 0; j--); <BR> <BR> NoSound(); <BR>} */ <BR> <BR> <BR>// ================================================== ============= <BR>// Main <BR>// ================================================== ============= <BR> <BR>int main(void) <BR>{ <BR> volatile unsigned char i, j, k; <BR> <BR> // Directions <BR> DDRA = 0x00; <BR> DDRC = 0x00; <BR> DDRD = (1<<PD5); <BR> <BR> // Pullups <BR> PORTA = 0xFF; <BR> PORTC = 0xFF; <BR> <BR> // Play Starsound <BR> for (k = 3; k > 0; k--) <BR> { <BR> Sound(2000); <BR> <BR> for (i = 255; i > 0; i--) <BR> for (j = 255; j > 0; j--); <BR> <BR> NoSound(); <BR> <BR> for (i = 255; i > 0; i--) <BR> for (j = 128; j > 0; j--); <BR> } <BR> <BR> <BR> for (;;) <BR> { <BR> if (i = ~PINA) <BR> { <BR> if (PINC & 0x01) <BR> { <BR> switch (i) <BR> { <BR> case 0x80: Sound(32000); // SW7 <BR> break; <BR> case 0x40: Sound(16000); // SW6 <BR> break; <BR> case 0x20: Sound(8000); // SW5 <BR> break; <BR> case 0x10: Sound(2000); // SW4 <BR> break; <BR> case 0x08: Sound(1000); // SW3 <BR> break; <BR> case 0x04: Sound(500); // SW2 <BR> break; <BR> case 0x02: Sound(250); // SW1 <BR> break; <BR> case 0x01: Sound(100); // SW0 <BR> break; <BR> } <BR> } <BR> else <BR> { <BR> switch (i) <BR> { <BR> case 0x80: Sound(2000); <BR> break; <BR> case 0x40: Sound(2001); <BR> break; <BR> case 0x20: Sound(2002); <BR> break; <BR> case 0x10: Sound(2003); <BR> break; <BR> case 0x08: Sound(2004); <BR> break; <BR> case 0x04: Sound(2005); <BR> break; <BR> case 0x02: Sound(2006); <BR> break; <BR> case 0x01: Sound(0); <BR> } <BR> } <BR> <BR> for (i = 10; i > 0; i--) <BR> for (j = 255; j > 0; j--) <BR> for (k = 255; k > 0; k--); <BR> <BR> NoSound(); <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üß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
Powered by vBulletin® Version 4.1.12 Copyright ©2012 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.