Hallo, ich habe hier ein kleines Problem mit einem Piezo-Schallwandler den ich als Trigger für ein Drumpad verwenden will. Ich habe mir mal das Projekt von der ISPF-Seite als Grundlage genommen. Ich habe den Piezo so wie in dem Projket beschaltet(Sampel&Hold -Schaltung)die Software habe ich in Assembler geschrieben (Soll erstmal nur zum testen sein!). Nun habe ich das folgende Problem. Ich muß schon mit sehr viel Kraft auf den Piezo schlagen um ein Ton zu erzeugen. Und dann habe ich noch einen Zeitversatz, d.H. der Ton kommt erst kurz nach dem schlag. Meine Frage: hat jemand schon ein ähnliches Projekt erfolgreich abgeschlossen, oder kann mir jemand ein Paar Tips geben wie ich diese Probleme in den Griff bekomme. Vielen Dank !! Ach ja der MC ist ein Atmege8.......
wenn ich ISPF bei google eingebe, bekomme ich u.a. das heraus "Institut Statistique de Polynésie française". Das hat wohl wenig mit deinem Problem zu tun...
>..
Start: sbi PIND,7
..
..
play: cbi PIND,7 ;Portpin low Kondensator entladen PD7 =
Portpin
13
/>..
müsste es nicht "cbi PORTD,7" bzw "sbi PORTD,7" heissen?
Mal sehen, ob ich nochwas finde
wie Piezo verpolt?! Sag bloß der hat eine Polung? Das würde ja schon einiges erklären. Wie muß ich den Piezo dann anschließen? Was ist denn der Unterschied zwischen Portd und Pind?
PIND ist ausschließlich zum Einlesen des Ports (Port muss als Eingang gesetzt sein!) PORTD ist nur zur Ausgabe auf den Port (Port als ausgang)
Ich muß euch mal ein Lob aussprechen ihr seid ja schnell wie die Feuerwehr. Echt Super!!!!!!!!!! Also das mit PIND und PORTD habe ich jetzt geändert. Ich weiß nicht ob sich dadurch wirklich was verändert hat? Muß ich den Ausgang eigentlich über einen Pull-Up/Down Wiederstand auf einen bestimmten Pegel ziehen? Ich habe AVCC über eine Induktivität 10uH nach VCC und einen Kondensator 100nF nach GND gelegt (wie im Datenblatt). ARef habe ich über einen Kondensator 100nF nach GND gelegt. Ein Oszi habe ich leider nicht. Ein kleinen Schaltpan wie die Beschaltung eines Piezos am MC aussehen muß würde mir wahrscheinlich sehr weiterhelfen. Vielleicht stimmt ja auch mit meiner ADC-Einstellung was nicht (AREF/Prescaler.....)?
>..
ldi Temp,((1<<REFS0) | (1<<ADLAR)) ;Kanal 0 auswählen und ADC Left
Adjust Result setzen
out ADMUX, Temp ;Kanal 0 = Portpin 23
/>..
ldi Temp,((1<<REFS0) | (1<<REFS1)| (1<<ADLAR)) ;Kanal 0 auswählen und
ADC Left Adjust Result setzen
out ADMUX, Temp ;Kanal 0 = Portpin 23
denn:
REFS1 REFS0 Voltage Reference Selection
-----+-----+-------------------------------
0 0 AREF, Internal Vref turned off
0 1 AVCC with external capacitor at AREF pin
1 0 Reserved
1 1 Internal 2.56V Voltage Reference with external capacitor
at AREF pin
Nur mit REFS0 hast Du also die 5Volt VCC als Bezug. Da musst Du dann
doller kloppen, damit sich was rührt. Nimmst Du REFS1 mit hinzu, hast
du die interne Referenz von "nur" 2.5Volt. Sollte jetzt besser
gehen.
Die Blechscheibe vom Piezo kommt an Masse, die Keramikscheibe den
Einstellregler. Je nach Polung erzeugen die Teile eine Positive oder
negative Ausgangsspannung, wenn sie durchgebogen werden. Wenn Du nun
draufhaust, verbiegt sich das Teil nach unten und erzeugt im
Fehlerfalle ein negative Spannung. Geht der Stick wieder nach oben gibt
es eine Positive Spannung. Ich weiss jetzt nicht, wann dein Portpin
zuschlägt - aber genau im ungünstigen Moment wird die Spannung
kurzgeschlossen...
Aber ich glaube nicht, dass man die Dinger verkehrt anbaut. Schon vom
Gefühl kommt die Blechscheibe ja an Masse---
Den Schaltplan kannst Du schon so übernehmen, wie er auf der Seite
angegeben ist.
Die Beispielvideosequenzen sind ja echt beeindruckend!
Kommen denn überhaupt irgentwelche Noten? Offensichtlich schon... dann
scheint der Rest ja zu funktionieren (Bei mir nämlich nicht, habe das
gerade mal zusammengelötet)
Ich werde mal die Suchfunktion des Forums bemühen.
PIN15 der Gameport SUB-D ist MIDI-IN? NA mal sehn...
O.K. ich bin jetzt auf der Arbeit kann das mit der AREF Einstellung nicht testen. Wenn ich zu Hause bin setze ich mich gleich mal dran und checke das mal. Ich glaube ich habe den Piezo völlig falsch angeschlossen. Das Metallplätchen hat auf der einen Seite eine Scheibe mit 2 Kontaktfeldern, an die habe ich die Kabel angelötet. Muß ich jetzt ein Kabel an die Scheibe löten und ein Kabel an eines der Kontaktfelder? Der Portpin geht doch erst auf Null wenn der Peak unter den vorherigen Wert fällt d.H. die Note abgespielt werden soll, das ist doch der richtige Zeitpunkt um ihn zu entladen (oder?)? Du mußt aufpassen wenn du direkt an den Gameport gehst, kann sein (je nach Soundkartenmodell) das du die Werte negieren mußt, bin mir aber nicht 100%ig sicher. siehe: http://www.mikrocontroller.net/forum/read-1-242282.html#new
Der Ansatz dieser Seite für ein Drumpad ist SEHR simpel. Normalerweise schaltet man mindestens noch einen OpAmp als Verstärker/Buffer vor den Controller. Piezos können auch recht unterschiedliche "Lautstärken" von sich geben. Vielleicht hilft dir dieses Projekt weiter: http://www.edrum.info/
Nochmal zur Beschaltung des Piezos: Ich hab mal ein Bild drangehängt. Also ich hab den Piezo jetzt an 1 und 3 angeschlossen. Kann mir jemand sagen ob das so richtig ist?
Danke, probier ich heute Abend gleich aus. Für was ist denn der Anschluß 1? Ist das die Negierung von 3? (Ist vielleicht ein bischen doof ausgedrückt) @Sascha Diese Edrum-Seite ist nicht schlecht, besonders die Umsetztung de HiHat pedals ist ganz interessant.
Du musst den Piezo an 1 und 2 anschließen. 3 ist nur wichtig wenn du ihn als Lautsprecher verwenden willst (Selbstschwingen).
ich habe mir jetzt MIDI-OX und den passenden YAMAHA Seriell Treiber runtergeladen, weil ich am Gameport (z.Zt.) keine, was zu connecten. Wie wäre es, wenn man die Analogelektronik nicht in die Pads einbaut, sondern in den STICK?!? So könnte man in der S-Bahn auf allem rumtrommeln .-)) http://img-europe.electrocomponents.com/largeimages/C285784-01.jpg http://www.rsonline.de/cgi-bin/bv/browse/Module.jsp?BV_SessionID=@@@@0622563515.1128947987@@@@&BV_EngineID=cccfaddflhjgfmdcefeceefdffhdglg.0&cacheID=deie&3306400855=3306400855&stockNo=0285784&prmstocknum=0285784&prodoid=0124973 (Was für ein Link - ob der geht?) Mit dem gezeigten Wegaufnehmer könnte man das am Stick realisieren. Man müsste nur alle paar takte mal die Instrumente "wechseln", aber das kann ja der Atmel machen. faszinierend, wusste nicht, das es SOO einfach ist! Gruß Axel
..keine, was zu connecten. bitte? ..keine Möglichkeit habe, was zu connecten. Habe keinen passenden Stecker zur Hand. Gruß nochmals AxelR.
der macht dir aus COM1 (oder eben 2 oder 3) einen MIDI Ein- und Ausgang. Spart man sich den Optokoppler Mist..
cbxdrv201w.zip heist die Datei http://www.yamaha.co.uk/xg/html/software/s_serial.htm da kann ich gleich mit meinem STK arbeiten und muss nicht erst alte Joysticks schlachten :-))
>>Spart man sich den Optokoppler Mist..
Dieser Optokoppler-Mist hat schon manches teure Keyboard oder Sampler
oder Computer gerettet - so abfällig würde ich das nicht beschreiben,
die MIDI-Entwickler in den frühen ´80ern haben sich etwas dabei
gedacht!
BTW: habe 8 Piezos als Drumtrigger an ´nem Multiplexer und fütter damit
den ADC eines ATMega16 (8MHz), sind somit anschlagdynamisch und die
Einstellzeit liegt unter 1 ms - alle Anschläge einer Stärke ergeben
auch gleich"starke" MIDI-Velocity-werte. Eingangsschaltung ähnlich
der geposteten weiter oben.
Habe ich "Mist" gesagt? Ja ahbe ich wohl. Ich meinte eigentlich den Umzstand, dass ich im Moment keinen Schneid habe, extra wa szusammenzubasteln. Habe ich eben noch nichts mit zu tun gehabt. Optokoppler ist schon wichtig, haste natürlich Recht. Zu deinem Multiplexer: schaltest Du nach jeder Wandlung einen weiter? warum hast Du nicht die vorhandenen Kanäle im AVR verwendet, sondern benutzt einen externen Multiplexer? Ich würde die Diode - wenn mans schon so einfach macht - vorspannen, damit man nicht erst die Schwellspannung erreichen muss. da fand ich die Schaltung mit dem Präzisionsgleichrichter schon ansprechender...
Also ich hab den Piezo jetzt richtig angelötet und siehe da jetzt kommt da auch was raus und die Schaltung funktioniert. Jetzt habe ich wieder ein Problemchen, wie lange muß ich warten bis ich Note Off sende, um ein realistisches Spielgefühl zu erzeugen? @TravelRec. Wie sieht denn deine Eingangsschaltung aus? Kann man in dein Programm mal ein auge werfen? (wäre Super zum Lernen!)
Du kannst sofort ein NoteOff senden. Die Note müsste noch weiterklingen. Zumindest war es bei mir so (Habe allerdings kein NoteOff verwendet, sondern NoteOn(0,0))
>>Zu deinem Multiplexer: schaltest Du nach jeder Wandlung einen >>weiter? >>warum hast Du nicht die vorhandenen Kanäle im AVR verwendet, sondern >>benutzt einen externen Multiplexer? Weil ich außer den 8 Pads noch 4 Pedale abfrage, die für Zusatzfunktionen (BassDrum oder Controller-Senden) reserviert sind. Nach jeder Wandlung schalte ich 1 weiter, genau. >>Ich würde die Diode - wenn mans schon so einfach macht - vorspannen, >>damit man nicht erst die Schwellspannung erreichen muss. da fand ich >>die Schaltung mit dem Präzisionsgleichrichter schon ansprechender... ´n Diode reicht. Besser ist Schottky, leitet ab etwa 0,3V. Bei einem Piezo ist as aber nicht sooo wichtig, weil bei relevanten Drum-Schlägen (also nicht nur Kitzeln) gibt so ein Wandler schon mehrere Volt. Bei meinem Projekt ist es so, daß bei heftigen Schlägen auf ein Pad auch das Nachbarpad noch mitsendet, also die Schwellspannung der Diode ist vernachlässigbar. >>Wie sieht denn deine Eingangsschaltung aus? >>Kann man in dein Programm mal ein auge werfen? (wäre Super zum >>Lernen!) Piezo -> Widerstand 100kOhm nach Masse -> 1N4148 -> 10k Serie ->100nF nach Masse -> Multiplexereingang (4067) Programm ist in "Konfus-ASM" geschrieben (eins meiner frühen Werke und noch völlig Beta) und steuert neben dem MIDI auch noch ein 2x16 LCD für Padinfos (Note, Midi-Kanal, DrumSet bla...) an. Zum Lernen ist das sicher nichts, aber es funktioniert richtig super ;-) >>Jetzt habe ich wieder ein Problemchen, wie lange muß ich warten bis >>ich >>Note Off sende, um ein realistisches Spielgefühl zu erzeugen? Meine Routine wartet so um die 20ms (Programm läuft derweil weiter!), bis eine gesetzte Note mit einem Note-Off wieder zurückgenommen wird. Somit erhalte ich recht kurze, aber ausreichende Notenlängen, die mein Sequenzer sehr gut verarbeiten kann. Kürzere Intervalle führen mitunter zum Abreißen des Klanges, längere Intervalle blockieren schnelle Tonfolgen - ausprobieren bringt hier einiges. Ebenso die Sache mit dem NoteOff oder NoteOn mit Velocity 0 - letzteres mögen manche Sequenzer nicht.
Mein schw..teurer Rechner zu Hause hat angebl. kein MIDI INPUT Device. Jetzt habe ich den Yamaha Seriell Treiber, aber trotzdem... :-(( Jetzt fäält mir ein, dass man das im BIOS einstellen kann, oder? Fujitsu Scaleo 600 3,irgentwas mit AC97 Sound on board. Über meine Tastatur kann ich Noten einspielen, also ein OUTPUT Device ist vorhanden - komisch. Hat jemand ne Idee? Danke AxelR.
MIDI-In (wie auch Out) läuft bei Soundkarten meist über den Gameport. Billige Onboard-Soundkarten haben soetwas aber oft nicht.
Na egal, wenn ich jedenfalls drann denke, wie kompliziert das früher mit reiner analogtechnik war. Da waren schon 5 OPV's weg für Trigger,Gate und Sample&Hold. Jeder einzeln mit Frequenzkompensation und das ganze mit +-15Volt.. Wenn ich die Schaltung noch finde, kann ich sie ja mal reinstellen. Schönen Gruß nochmal AxelR.
Vor Jahren hatte die Elrad auch mal eine Drum-Trigger-Schaltung. Allerdings nur aus TTL/CMOS-Bausteinen. Den genauen Aufbau hab ich nicht mehr im Kopf, aber sa waren am Eingang IMHO ein Widerstand (Strombegrenzung) und Überspannungs-Schutzdioden (so wie sie beim AVR Standard sind; die sollte man dafür aber bestimmt nicht benutzen...). Abgefragt wurden die Eingänge mit einem Demultiplexer. Die Daten und Adresse wurden dann wohl noch über Schieberegister versandt... Alles quasi diskret aufgebaut.
@TravelRec. Wie hast Du das mit dem Warten gelöst? Über einen TimerInterrupt der alle 20ms Note-Off sendet? Zu deiner Schaltung für die Piezos: Hab mal ne Zeichnung angehängt. Sieht die Schaltung bei Dir so aus? Ich bin nämlich immer noch am optimieren meiner Piezo Eingangsschaltung. Im momment benutze ich die Schaltung wie in dem ISPF Projekt. @AlexR. Ich denke das mit dem Treiber über die Serielle Schnitstelle wird so nicht funktionieren, weil der PC keine 31250 Baud an der Seriellen Schnitstelle versteht. Ich könnte mir höchstens vorstellen das man dann das MIDI-Signal mit einer anderer Baudrate fahren kann und es so über die Serielle Schnittstelle in den PC-Bringt, ist aber nur eine Vermutung. Man müßte ja dann in dem Treiber von Yamaha eine Baudrate einstellen können. Ich habe zu Anfang meines Projektes probiert die Midi-Daten auch über die Serielle Schnittstelle auszugeben und das ganze mit einem Terminalprogramm anzuschauen, aber das hat aus dem oben genannten grund auch nicht funktioniert.
Warum soll der PC keine 31250 Baud können? Nur, weil diese Baudrate in den meisten DropDown Listen der meisten "SeriellTools" ausgelassen wurde? Ich kann mich auch irren, aber das sollte kein Problem darstellen - ich lese nochmal, vielleicht finde ich eine verlässliche Aussage dazu. Gruß
Alte Multi-IO-Bausteine konnten das wegen der festen Quarze nicht machen. Vielleicht arbeiten da heute "bessere" Bausteine...
Also ich habe das mit allen möglichen Terminalprogrammen bei denen man die Baudrate frei einstellen kann probiert. Und bei keinem kam was vernünftiges am PC an. Vielleicht gibt es ja Mainboards (Chipsätze) die auch krumme Baudraten zulassen.
der YAMAHA Treiber erwartet seine MIDI Daten mit 38400baud. Zumindest habe ich das hier rausgelesen... http://www.ucapps.de/midibox_to_com.html mitm AVR wäre das kein Problem ->stelle ich eben 38400 ein. normale MIDI Geräte gehen so natürlich nicht. (Ich habe das jetzt alles nicht getestet - muss erstmal ein bisschen arbeiten)
Habe ja alles hier auffa Arbeit - brauche ich nicht lange zu spekulieren. Hier die Einstellungen, die der YAMAHA Treiber an COM1 macht: 0.00012041 midiox.exe IRP_MJ_CREATE Serial0 SUCCESS Options: Open 0.00000475 midiox.exe IRP_MJ_CLEANUP Serial0 SUCCESS 0.00000391 midiox.exe IOCTL_SERIAL_SET_QUEUE_SIZE Serial0 SUCCESS InSize: 1024 OutSize: 1024 0.00001313 midiox.exe IOCTL_SERIAL_PURGE Serial0 SUCCESS Purge: TXABORT RXABORT TXCLEAR RXCLEAR 0.00000140 midiox.exe IOCTL_SERIAL_SET_TIMEOUTS Serial0 SUCCESS RI:-1 RM:-1 RC:6 WM:0 WC:0 0.00000140 midiox.exe IOCTL_SERIAL_GET_BAUD_RATE Serial0 SUCCESS 0.00000168 midiox.exe IOCTL_SERIAL_GET_LINE_CONTROL Serial0 SUCCESS 0.00000140 midiox.exe IOCTL_SERIAL_GET_CHARS Serial0 SUCCESS 0.00000140 midiox.exe IOCTL_SERIAL_GET_HANDFLOW Serial0 SUCCESS 0.00002458 midiox.exe IOCTL_SERIAL_SET_BAUD_RATE Serial0 SUCCESS Rate: 38400 0.00001341 midiox.exe IOCTL_SERIAL_CLR_RTS Serial0 SUCCESS 0.00001425 midiox.exe IOCTL_SERIAL_CLR_DTR Serial0 SUCCESS 0.00001257 midiox.exe IOCTL_SERIAL_SET_LINE_CONTROL Serial0 SUCCESS StopBits: 1 Parity: NONE WordLength: 8 0.00001090 midiox.exe IOCTL_SERIAL_SET_CHAR Serial0 SUCCESS EOF:0 ERR:0 BRK:0 EVT:0 XON:0 XOFF:0 0.00001592 midiox.exe IOCTL_SERIAL_SET_HANDFLOW Serial0 SUCCESS Shake:0 Replace:0 XonLimit:0 XoffLimit:512 0.00000363 midiox.exe IOCTL_SERIAL_GET_PROPERTIES Serial0 SUCCESS 0.00001062 midiox.exe IOCTL_SERIAL_GET_COMMSTATUS Serial0 SUCCESS 0.00058415 midiox.exe IRP_MJ_READ Serial0 CANCELLED Length 16 0.00053415 midiox.exe IRP_MJ_READ Serial0 CANCELLED Length 16 0.00051487 midiox.exe IRP_MJ_READ Serial0 CANCELLED Length 16 wird also tatsächlich 38400 eingestellt
so, der Drummstick funktioniert gg erst mal nur am STK500.. leichte bis mittlere Schläge steuern die Intensität(drittes Byte), ein "harter" Schlag inkrementiert gleichzeitig auf das nächste Instrument. (Kanal 10, andere Note) 38400Baud an COM1. Jetzt kann ich meine Kollegen nerven. Sascha sei Dank!! So viel Spass mit so wenig Aufwand - Klasse! in FastAVR sieht "Clapphands" so aus:
1 | $Device= mega16 ' used device |
2 | $Stack = 28 ' stack depth |
3 | $Clock = 3.6864 ' adjust for used crystal |
4 | $Source=On ' basic source in Asm |
5 | $Baud = 38400 |
6 | |
7 | Do ' place your code in next line |
8 | WaitMs 250 |
9 | PrintBin 144;39;127 |
10 | Loop
|
Gruß Axel
Ich nochmal: ich bekomme sehr oft zwei Anschläge direkt hintereinander mit zwei unterschiedlichen Intensitäten. Die Sache klingt dadurch sehr unsauber. Ich lese mich nochmal in die Quelltexte ein.. Schönen Abend noch AxelR.
>>@TravelRec. >>Wie hast Du das mit dem Warten gelöst? >>Über einen TimerInterrupt der alle 20ms Note-Off sendet? Ja, über Timer - ich setze pro angeschlagenem Pad eine Speicherzelle mit dem Wert 20 und wenn der Timer jede Millisekunde vorbeirauscht wird sie dekrementiert bis sie 0 ist und dann wird für dieses Pad der passene Note-Off Befehl ausgesendet. Habe ich alles in Arrays programmiert aber frage jetzt bitte nicht nach Einzelheiten ;-), bin froh, daß es geht und fasse es nicht mehr an ;-). >>Zu deiner Schaltung für die Piezos: >>Hab mal ne Zeichnung angehängt. >>Sieht die Schaltung bei Dir so aus? >>Ich bin nämlich immer noch am optimieren meiner >>Piezo Eingangsschaltung. Nee, so sieht sie nicht aus, da bei Dir die Diode an Masse liegt. Schaltung im Anhang!
Das mit den Arrays und dem Timer würde mich aber doch mal interessieren ich stehe nämlich jetzt vor dem gleichen Problem. Das ist mein erstes Projekt mit einem Atmega und Assembler und irgend wie habe ich keine Ahnung wie ich in Assembler ein Array hinbekomme. Theoretisch ist das schon klar aber mit der Umsetzung klappts dann doch nicht so. Das Array wird ja im S-Ram angelegt. Der Stack wird von Oben nach Unten gezählt. Also fängt das S-Ram bei 0060h an (bei Atmega8) und zählt dann nach Oben. Wenn ich jetzt z.B. auf Zelle 8 zugreifen will Zeiger auf Array: ldi YH, HIGH(Array) ldi YL, LOW(Array) lesen aus Array: ldd r16, Y+8 schreiben in Array: std Y+8, r16 Ist das so korekt? Wenn ich aber in einem Register die Zellenposition hab wie gehe ich dann vor? Ich hoffe ich habe mich einigermaßen verständlich ausgedrückt.
Lesen von Zelle 8 Beipiel: ldi XH, $0 ;Pointer initialisieren (Array Start) ldi XL, $60 ldi Temp, 8 ;statt Temp könnte ein Zähler mitlaufen clr TempH add XL, Temp ;Wert auf X-Pointer addieren adc XH, TempH ;Falls Überlauf, XH +1 ld Temp, X ;Wert aus SRAM lesen .... Schreiben von Zelle 8 Beipiel: ldi XH, $0 ;Pointer initialisieren (Array Start) ldi XL, $60 ldi Temp, 8 ;statt Temp könnte ein Zähler mitlaufen clr TempH add XL, Temp ;Wert auf X-Pointer addieren adc XH, TempH ;Falls Überlauf, XH +1 ldi Temp, $45 ;zu speichernden Wert laden st X, Temp ;Wert in SRAM schreiben
Ahhhhh, jetzt hab ich es verstanden. So kann ich aber nur Arrays mit max 255 Zellen verwalten, oder?
256 Zellen, die nullte Zelle ist auch eine! Das sollte aber für 8 Drumpads auch reichen ;-), ansonsten brauchst Du 2 Zähler-Register (1 für Low, 1 für High), die Du dann auf den Pointer addierst. Somit hast Du 65536 Adressen frei - wohl aber nicht soviel SRAM... Viel Spaß noch beim Proggen. Übrigens finden sich in den Atmel Appnotes viele schöne Beispiele für den Umgang mit Pointern, z.B. in dem Code für den DTMF-Signalgeber.
Ich habe das Programm jetzt soweit das ich die 6 Pads relativ sauber auslesen kann aber die Zeitverzögerung ist immer noch da :-( Sollte bei 16MHz Takt eigenztlich nicht sein oder? Oder liegt es doch an meinem Programm? Der Code ist im Prinzip der gleiche wie im ersten Beitrag nur das in einer Schleife die 6 ADC-Ports abgefragt werden. Die Peaks usw. werden im S-RAM abgelegt. Hat jemand ein Tip oder ein Denkanstoss für mich?
Zeitverzögerung hat verschiedene Gründe. Bei großer Verzögerung ist wahrscheinlich die Soundkarte schuld. Womit gibst du den Ton aus ? Gibst du einen Midi-Ton aus oder benutzt du einen Sampler ? Für schnelle Soundwiedergabe benötigt man normalerweise eine Soundkarte mit niedriger Latenz und ASIO-Treibern.
Das stimmt natürlich, da können etliche 10 Millisekunden dazukommen. Häng doch mal ´nen Keyboard dran und aktiviere die Drum-Abteilung. Oder nimm ´ne simple LED und klemm sie auf den MIDI-Ausgang. Sie muß just in dem Moment blitzen, da Du auf die Pads haust. Nicht so tock.......blink, sondern genau auf "1". Also mein ATMega16 hat die 12 Eingänge zu verwalten, daddelt mit 8MHz und ist trotzdem fett schnell. Wartest Du denn irgendwo mit ´nem Delay oder so auf irgendetwas? Liest Du alle 6 Pads mit dem ADC hintereinander weg bevor Du irgendetwas anderes tust??! Falls ja, lies mal immer erst 1 Pad, dann den Multiplexer eins weiterschalten, mach dann die Auswertung: A/D Wert für dieses Pad größer als beim letzten Durchlauf, wenn ja Trigger-Byte für das Pad auf 20 setzen, schicke dann die MIDI-Daten für eben jenes Pad (Note On), und nimm dann den Meßwert für´s nächste Pad und so weiter - so mußt Du an keiner Stelle warten. Zwischendurch dekrementierst Du per Timer-interrupt die Triggerbytes und guckst, ob sie schon wieder auf 0 heruntergezählt sind, sendest in dem Fall für dasjenige Pad den Note-Off Befehl und dann weiter im Text. Okay, das erfordert schon eine flüssige Programmierung mit so ein, zwei Interrupts, ´nem Sack voll Flags und kurzen Routinen, ist aber machbar. Die einige wirkliche Bremse ist der ADC, den man nicht unendlich schnell laufen lassen kann und auf dessen Ergebnis man immer warten muß.
Also es lag nicht an meinem Programm. Es liegt tatsächlich wie Sascha schon gesagt hat an der Latenz der Soundkarte. Ich hab mir jetzt Treiber mit niedriger Latenz für meine Sounkarte besorgt und siehe da es läuft einwandfrei. Die Treiber gibt es übrigens unter http://kxproject.lugosoft.com/
Na sach´ das doch gleich - ich arbeite seit 2 Jahren mit dem kX-Treiber, geht aber nur für spezielle Creative/EMU-Soundkarten (schon mal in´s Forum geguckt?!) ;-).
So, ich wollte mich nochmal zurückmelden. Vielen Dank für eure Tips und Infos. Ich bin jetzt gerade dabei meine gesammelten Infos jetzt zu einem Gesammtprojekt zusammenzusetzen. Ich habe die letzten Tage viel gesägt, gefeilt und geklebt. Fehlt nur noch ein bischen Lack und die Holzarbeiten sind dann abgeschlossen. Die Elektronik steht auch schon fast. (Bin gerade beim Layouten der Platine.) Wenn iteresse besteht werde ich die Tage mal ein paar Bilder anhängen.
Ja professionell! Fett! Gefällt mir. Richtig schön Zitonengelb :-) Hut ab! Neugier: was zeigt´n Dein Display an?
Also momentan zeigt das Display noch nicht so viel an. Ich bin gerade dabei ein Menü zu schreiben. Die folgenden Funktionen sollen im Menü Implementiert sein: - Midi Kanalauswahl - Zuweisen der einzelnen Drumpads zu Instrumenten - Speicherfunktion für Presets - Anpassung der Anschlagdynamik und Lautstärke für jedes Drumpad - Statusanzeige für alle Drumpads - Midimonitor (was gerade über den Midi-Out gesendet wird) Ansonsten verfügt meine Schaltung über 10 Triggereingänge von denen die ersten 6 fest auf dem Drumpad angeschlossen sind, die anderen 4 sind über eine Buchse nach aussen geführt um z.B. ein HiHat-Pedal und ein Basedurm-Pedal und/oder Becken anzuschließen.
Hallo, ich habe als Piezo-Eingangsschaltung mal die Schaltung von eDrum.info nachgebaut. Allerdings sieht das Ausgangssignal ziemlich hässlich aus. Ich habe das Oszillogramm eines einzelnen(!) Anschlags mal angehängt (Sorry, hab' nur ein Analog-Speicheroszi, deshalb ist das Bild nicht so gut). Man sieht, dass das Signal ziemlich lange schwingt (bei 2ms/Div) und viele Peaks hat, was beim Einlesen zum mehrfachen Erkennen von Anschlägen führt. Wenn man als Workaround aber z.B. nur den 1. Peak als Anschlag nimmt, kann es sein, dass dieser nicht proportional zur Schlagstärke ist, weil erst danach der "Hauptpeak" kommt. Hat jemand eine Idee, wie man die Schaltung verbessern könnte? Gruß Mathias
Dann nimm doch einfach den OV weg und nimm die Schaltung, die ich weiter oben gepostet habe. Wenn Du direkt am AVR-A/D anschließen willst, mußt Du die Schaltung etwas abwandeln: R1 ist dann 1M, da wo 4067 Eingang xx steht, hängst Du nochmal 10k in Serie und dann den A/D dran, vom A/D-Pin 100k nach Masse, damit die Piezo-Spannung abfließen kann. Über die letzt genannten Widerstände kannst Du die Anstiegs- und Abfallzeiten für Deinen Spannungshuckel festlegen. Und: es wird pro Anschlag nur 1 Huckel sein ;-), dessen effektive Höhe von der Anschlagstärke abhängt.
Hmm, ich habe die Schaltung nach deinem Vorschlag aufgebaut (direkt am AVR), bekomme aber immernoch mehrere "Huckel". Kann es evtl auch an meinem Piezo liegen? Vielleicht schwingt der zu lange nach und gibt so über längere Zeit Spannung ab. Ich habe auch den Entladewiderstand testweise bis auf 10k verringert. Mit dem Ergebnis dass sich die Empfindlichkeit drastisch verringert und ich immernoch mehrere Anschläge bekomme. Vielleicht noch etwas zur Abfrage (Software): Ich lese den ADC-Wert ein, wenn der folgende größer ist wird er als neuer Max-Wert gespeichert. Ist der ADC-Wert kleiner als der Max-Wert, wird eine Note gespielt. Ich habe auch schon versucht die Ausgabe so lange zu blockieren, bis der Spannungswert wieder auf einen bestimmten Wert gefallen ist. Dadurch wird's aber ziemlich träge, da ich noch relativ lange eine Spannung am Kondensator habe...
Klar, die sind zum Entladen des Kondensators ;-) Ich hatte die Anschlüsse auch schon mal dran, nur will es trotzdem nicht richtig funktionieren (siehe Bild im Anhang, 10ms/div). Der Kondensator wird anschließend sofort wieder nachgeladen... Könnte es vielleicht daran liegen, dass an der Diode noch 0,7V abfallen und der Kondensator so nie richtig entladen wird?
Ich bin gerade auch wieder dabei so einen Drumcontroller zu bauen. Womit ich probleme hatte, ist diese Diode, die an einem Pin angeschlossen wird, und die den Kondensator entladen sollte. Das funktionierte nie so richtig wirklich. Was bei mir viel besser ging: BS170 gegen Masse schalten und dann einfach nur das Gate kurz ansteuern. Man sieht bei deinem Scopebild auch garkeine scharfe Flanke, die Richtung Masse 'saust'. Das muss aber schon so sein.
Ähm eine kleine Frage noch: Hat jemand eine Ahnung, wie die Klinkenstecker von diesen kommerziellen Drumpads (habe hier das Roland PD6) beschaltet sind? An der Spitze kommt immer ein negativerer Impuls als am Schaft an. Ich habe das Gefühl, dass der negative Pol vom Piezo an der Spitze liegt und der positive am Schaft. kann das sein? Wie ist dann die Belegung bei Dual-Trigger pads?
Hmm - das ist aber komisch, bei meiner Schaltung bekomme ich immer nur einen Huckel. Die Zeitkonstante von Ladewiderstand und Kondensator ist so gewählt, daß etwa 30 ms überbrückt werden, die Entladung ist dabei etwa 10x langsamer, als die Ladung. Damit können dann Impulse von maximal 30 Hz detektiert werden, was für´s Drumming völlig ausreicht und den Körperschall des Gehäuses weitestgehend außer Acht läßt. Mittels der Firmware lese ich ständig und schnell den ADC, um den Peak zu detektieren und gebe dann den Peakwert in eine Speicherzelle, die zur Generierung des MIDI-Velocity-wertes herangezogen wird. Die Response-Zeit liegt um und bei 5ms bei Abfrage von allen 12 Pads. Also nochmal im Klartext: über den Piezo werden 1MOhm parallel geschlossen. Der Messingrand des Piezos kommt an Masse, die Keramik ist der heiße Pol. Dieser geht direkt auf die Anode der Diode. Zur Erhöhung der Empfindlichkeit kann dies eine Schottky-Diode sein. Die Kathode geht über 10kOhm an den Speicher-Kondensator, der als Richtwert 100n groß ist. Der Speicher-Kondensator geht nach Masse. Parallel zum Speicher-kondensator wird wieder 1MOhm angeschlossen. Vom Spiecherkondensator geht nochmals ein 10kOhm-Widerstand (zum Überspannungsschutz) direkt zum A/D - Converter. Das war´s. Woran hast Du denn den Piezo geklebt? Vielleicht schwingt ja diese Platte so lange nach und es liegt gar nicht am Piezo selbst. In dem Fall hilft ein größerer Speicher-Kondensator.
Ich hab deine "Schaltung" als Vorlage genommen und dabei bin ich auf folgendes gekommen: Parallel zum Piezo 1MOhm. Dann eine Diode in Reihe (kann Schottky, sollte sogar), dann der Ladekondesator und dahinter ein Spannungsteilerpoti von 1MOhm. An den Abgriff den ADC Eingang. Der Kondensator wird mittels n-FET entladen. Klappt äußerst gut!
Na bidde - geht doch. Bestimmt findet jeder das für sich geeignetste Konzept beim Probieren und Programmieren... Grüße!
Ich habe jetzt mal den FET zur Entladung genommen, jetzt sieht man tatsächlich die steile Entladeflanke. Das Problem besteht aber immernoch :-( Der Kondensator lädt sich gleich wieder auf und das spielchen dauert ca. 50 ms. Das ist etwas viel... Ich vermute, dass es tatsächlich am mechanischen Aufbau liegt (dünne Holzplatte über 5 Filzdämpfer auf eine Dicke Platte geklebt). Das Teil scheint doch sehr zu schwingen.
Welchen Durchmesser hat denn die Platte? Und ist sie Rund oder eckig?
Die Platte ist eckig, ca. 24cm*18cm. War eigentlich nur zum testen, beim eigentichen Pad werden sie wesentlich kleiner...
Das liegt bestimmt an der Platte - ich habe alte CDs genommen, die runden Piezos direkt auf das Loch in die Mitte der Unterseite geklebt und eine Lage Kunststoff-Fußbodenbelag direkt auf die Oberseite der CD geklebt. Das gesamte Pad hat eine Resonanz weit über 100 Hz und durch den 1,2mm schaumigen Fußbodenbelag schwingt da auch nichts nach.
Hallo, Ich möchte hier auch nochmal mein (fast) fertiges Projekt vorstellen. So wie es im Moment ist, kann es eigentlich schon im vorgesehenen Sinne eingesetzt werden. http://klinkerstein.m-faq.de/index.php?dir=/Selbstbau%20Drum-Controller
@Simon: könnte man den MOSFET nicht weg optimieren ? Ich meine statt dem MOSFET den Pin zum Gate mit einem Widerstand von ca. 240 Ohm direkt an der jetzigen Drain anschließen. Der Pin steht normalerweise auf Eingang und zum Entladen wird er auf Ausgang-Low gelegt. D.h. statt dem MOSFET entlädt der Pin den Cap. Gruß Hagen
Das hat der Guido so gemacht. Aber das hat komischerweise nie so richtig funktioniert. Anstatt da nachzuforschen habe ich es lieber "Sauber" gemacht. und ein BS170 verbraucht auch nicht soviel Platz.
Hm, ich habe mir jetzt mal Guidos Schaltung angeschaut. Auch da könnte man meiner Meinung nach was verbessern :) Also vom Cap zum ADC Eingang einen 240 Ohm Widerstand rein. D2 und PORTX0 entfallen vollständig. Der ADC ist normalerweise auf Eingang geschaltet und zum Entladen des Cap wird er auf Ausgang->Low geschaltet. Somit spart man pro Kanal einen kompletten Pin. Klar, man müste dies noch praktisch testen. Gruß Hagen
Der Vorteil von Guidos Schaltung ist die Position des Potis. Man kann es direkt auf dem Drum bauen und den Rest der Schaltung separieren. Gruß Hagen
@Hagen es ist zwar Zeitunkritisch, aber man sollte wie Du weißt den ADC nicht als ADC und PORT nutzen. Dennoch kann ich Deinem Vorschlag zustimmen da der ADC sich wirklich langweilt und man das Signal ruhig zig mal oversamplen kann. Bau ich bei mir mal um "wenn ich Zeit habe" Gruß, Guido
Naja deine Beschaltung hat einen großen Vorteil meine ich. Über D2 und PORTX auf HIGH hast du einen Überspannungsschutz für den ADC realisiert. Alles was am ADC Eingang über Vcc +0.7V liegt wird in den PORTX über D2 abgeleitet. Das ließe sich aber auch anders bewerkstelligen, wenn mans real auch braucht. Ich stimme dir zu das man den ADC nicht so mißbrauchen sollte, wenn es draufankommt. Alledings sind die AVRs in diesem Punkt wirklich robust und ich wüste auch nicht das davon irgendwas in den Datenblättern steht. Wenn was nicht funktionieren sollte, so meine ich würde es eher zu Problemen mit einem Übersprechen der einzelnen ADC Kanäle auf die anderen ADC Kanäle, kommen. Gruß Hagen
der ADC sollte von Haus aus bei den neueren AVRs eh Klemmdioden drin haben. Ich wüßte nicht, warum die beim benutzen des Ports als ADC wegfallen sollten. Aber wie gesagt, ich teste das mal. Das was da gesampled wird ist ja so schnarchlangsam, das man es eigentlich mitschreiben könnte. Gruß, Guido
Auf alle Fälle meine ich das beide Schaltungsvarianten zwei komplett andere Paar Schuhe darstellen und demzufolge in der Software anders ausgewertet werden müssen. Das Ladeverhalten vom Cap wird je nach Schaltung unterschiedlich sein. Simons Schaltung wird den Cap immer mit gleicher Geschwindigkeit aufladen und das nachgeschaltete Poti stellt die zu messende Spannung am ADC ein. Guidos Schaltung wird je nach Poti Stellung das Ladenverhalten vom Cap beeinflussen und die Software muß wie er's beschrieben hat die Ladekurve des Caps über den ADC messen. Ich weiß nun nicht was davon die bessere Lösung ist, aus Sicht eines Drummers. Persönlich mein ich das man über das Messen des Ladeverhaltens des Caps mehr in Software beeinflussen kann, und das das vorgeschaltete Poti wie in Guidos Schaltplan, stärker die Anschlagstärke/Dauer des Piezos beeinflussen wird. Gruß Hagen
@Guido: Ich habe das "sauber" extra in Anführungsstriche gesetzt, da das nicht so hart gewertet werden soll. Deine Version ist insofern unsauber (finde ich), dass um den Cap zu entladen der Strom durch den Mikrocontroller auf Masse fließt. Wenn ich nun meinen Cap per 10cm Leitung angeschlossen, dann fließt der Strom erst wieder 10cm zurück, durch den Mikrocontroller und dann wieder 10cm zum Cap hin. Also habe ich den FET direkt neben den Kondensator gesetzt. Zumindest ich finde das so "sauberer", wie ich schon sagte. Ein "Problem" was ich auch feststellen konnte, ist dass aufgrund der LED erst (relativ..) steil entladen wurde und dann nur noch langsam, da die Spannung am Kondensator allmählich kleiner wird, als die Durchlassspannung der Diode. Ein weiterer Grund, den ICH nicht so "sauber" finde. Mit meinem FET habe ich eine sehr steile Entladeflanke. @Hagen: Ich persönlich bevorzuge, den Trimmer/Poti hinter die Aufladeschaltung zu setzen, eben um nicht auf der Kondensatorkennlinie "herumzureiten". Denn man muss ja auch beachten, wenn man ein 1M Ohm Poti auf 50% (Spannungsteiler) stellt, dass da 500kOhm in Reihe zum Kondensator liegen. Ich lade, wie schon von dir gesagt, den Kondensator gleichmäßig und teile einfach die Spannung die anliegt so, dass die Spannung im ADC Bereich liegt. (Bei richtiger Einstellung sollte hier auch kein >5V Peak zum ADC gelangen).
@Simon: wenn ich dich also richtig verstanden habe dient dein Poti nur zur Anpassung des Bufferkondensators/Piezowandler an deinen ADC Eingang. Dh. dein Poti hat nichts damit zu tun das man damit die Empfindlichkeit des Drumpads einstellen möchte. Ist das korrekt ? Sollte das so sein so würde doch eine Zenerdiode statt dem Poti ausreichend sein, oder ? Ich bin kein Drummer, noch nicht mal Musiker, aber ich denke das besonders die Erkennung der Anschlagstärke und Geschwindigkeit (Pitch heist das wohl?) von Wichtigkeit ist. Und um dies für jedes Pad einstellen zu können gibt es ja nur 2 Möglichkeiten: a.) per Hardware wie bei Guidos Schaltung oder b.) per Software. In deinem Falle dient aber das Poti eben nicht zur Veränderung der Ladekurve am Cap. sondern nur als Spannungsvorteiler für den ADC. Oder liege ich da vollkommen falsch ? Gruß Hagen
@Hagen: Natürlich dient das Poti zur Empfindlichkeitsanpassung des Pads. Es gibt durchaus verschieden Drum-Pads die unterschiedlich starke Signale liefern. Und um den relevanten (also den, den mit dem der Drummer auf die Pads schlägt) Bereich in den ADC-Bereich hereinzukriegen, existiert das Poti. Wenn ich mit meinem Pad erstmal einen Kondensator auflade, der, sagen wir mal, jetzt mit 30V geladen ist (Ziemlich harter Anschlag), dann wird das Signal auf 2,56 herunterskaliert mit dem Poti. Also entspricht dieser Anschlag jetzt Maximalausschlag am Drum-Controller. Und jetzt stell dir mal vor, man schlägt das Pad in der Regel nicht so stark an, dann wird die Spannung am ADC garantiert nicht 2,56V übersteigen. Also brauche ich da keine Schutzdioden oder ähnliches.
Hallo! Bin neu hier im Forum und kenne nicht schlecht aus in der Elektronik aber dann doch auch irgendwie haha, darum hätte ich da eine Frage zu einem Schaltplan den ich einige Stunden gesucht hatte! Diese OP´s werden ja mit 5V betrieben d.h heißt das am Ausgang bei max.Anschlag auf den Piezo werden am Ausgang 0-5V ausgegeben wenn ich das richtig verstanden habe. Da ich aber am Ausgang 0-3,3V haben möchte müsst ich ja dann eig. nur den OP mit 3,3V versorgen?! Oder passen dazu meine Widerstandwerte dann nicht mehr? Und VR1-VR8 sind Potentiometer würde ich vermuten?! Nur um sicher zu gehen :D Das ganze will ich dann mit A/D Wandler (MCP3008) am Raspberry einlesen. Brauche di 3,3V da der Raspberry nicht mehr als 3,3V verträgt und dadurch muss der MCP auch mit 3,3V betrieben werden. Und die Eingänge des AD´s dürfen die Betriebsspannung nicht überschreiten darum muss ich die Piezoschaltung umbauen! Was meint ihr zu der Schaltung? Könnte die so klappen wies da aufgezeichnet ist. Hab mich mit OP´s erst wenig beschäftigt, wär ein Thema wo ich echt gerne dazulernen will und würd mich über qualifizierte Ratschläge zur Verbesserung freuen. Danke Valerian
:
Bearbeitet durch User
1K Widerstände in die Ausgänge und wird gut gehen. edit besser 10K
Valerian Valerian schrieb: > Ok danke, also meinst 10k pullwiderstände auf Ground oder? Warum Pullwiderstände auf Ground? Kannst Du deine Annahme begründen? Reihenwiderstände in die Leitungen, damit die Schutzdioden im Eingang gegen GND bzw. VCC nicht soviel Strom ableiten müssen. Deine Eingangssignale werden somit automatisch auf VCC+0.3V begrenzt.
Sonst brauchst Du andere Verstärker. LMV358 könnten gehen. Die invertierende Beschaltung der OPVs machen die EIngänge für den Piezo recht niederohmig. Du erhälts aber höherer Spannungsspitzen, wenn die Potis dort rauskommen und deine Piezo direkt an den (hochohmigen) Eingang kommen. Das 100K Poti dämpft schon und die 22K Eingangswiderstand tun ihr übriges. Da ich aber die Sensorik und den Aufbau nicht kenne, kann ich nicht viel mehr dazu sagen. Beachte die Maximale und mininmale Eingangsspannung beim Operationsverstärker. Du brauchst sicher einen Rail-to-Rail Typ. Verwende zwei Doppel-Opv gesockelt. die haben (fast) alle die gleiche Anschlussbelegung, wenn Du sie als DIP8 kaufen kannst, sockelst Du die und kannst sie tauschen, ohne in der Schaltung etwas ändern zu müssen. Probiers aus, kaputt gehen kann nicht viel. http://www.reichelt.de/ICs-MCP-6-9-/MCP-602-I-P/3//index.html?ACTION=3&GROUPID=5473&ARTICLE=90032&SEARCH=mcp&SHOW=1&OFFSET=500& http://www.reichelt.de/IC-Sockel/GS-8/3//index.html?ACTION=3&GROUPID=3215&ARTICLE=8230&SHOW=1&OFFSET=500&
Input Characteristics LMV358
1 | Input Common Mode Voltage Range² |
2 | ○○LO 0 -0.4 V |
3 | ○○HI 3.8 3.6 V |
²Bei 5Volt Bei 3.3Volt sieht die Sache noch schlechter aus. Bei dem MCP602, den ich siegessicher beim reichelt rausgesucht habe, steht zwar RailtoRail. Aber nur auf den Ausgang bezogen!! Der Eingang darf auch nicht mehr als (VCC-1.2)Volt "sehen"! Dein OPV muss also In und OUT R2R sein. Lässt Du die Schaltung so, ist die hochohmigkeit des Eingangs unerheblich, das sie hier von der IEngangsbeschaltung bestimmt wird, die um Größenordnungen geringer ausfällt.
Axel R. schrieb: > Warum Pullwiderstände auf Ground? Kannst Du deine Annahme begründen? Naja begründen jetzt nicht direkt, ausser das bei der Fortsetzung dieses Schaltplanes diese auf Ground gezogen sind! Links obene im Eck kommen die Ausgänger der OP´s an soweit ich das geschnallt haben :-)
such doch mal hier im Forum nach Piezo Drum MIDI oderso. das haben wir doch schon 2008-2009 mitm Guido zusammen gebaut. http://www.youtube.com/watch?v=2ZzUYOwYLIU
Ach ja und echt danke für die anderen Beiträge was du verfasst hast auch, versteh zwar noch net ganz so viel davon aber ich versuch mal da ich mich da einlese! Habe zwar Mechatroniker gelernt aber mich jetzt erst seit 6 Monaten mit der mikroelektronik sehr intensiv damit beschäftigt :)
>mit A/D Wandler (MCP3008) am Raspberry einlesen.
ich sehe in deiner Schaltung keinen.
BTW: 2006 gab es noch keinen Raspberry...
Nimm die erste Schaltung, die Du gepostet hast und häng die mit 10k in
Reihe an deie ADCs von deinem Raspberry. Dann berichte uns. Das
funktioniert schon.
Es kann nicht schaden, ein neuen Thread zu eröffnen und kene Leichen
auszubuddeln.
Ich Trottel fall NATÜRLICH wieder auf so eine Karteileiche rein. ;)
Axel R. schrieb: > Nimm die erste Schaltung, die Du gepostet hast und häng die mit 10k in > Reihe an deie ADCs von deinem Raspberry. Dann berichte uns. Das > funktioniert schon. Ja also der Raspberry hat ja keine Analogeneingänge also keinen ADC on Board darum muss ich das ganze über den MCP3008 machen aber an der Schaltung wird sich ja dadurch nichts ändern vermute ich jetzt mal. Ach ja und auch noch ne andere Frage. Was hab ich dann hier für ne beschaltung des Opv? (invertieren, nicht invertieren...... usw?) Und dieser OPv ist ja auch für rail-to-rail ausgelegt oder!? (Das heißt doch das die Ausgangsspannung nahe der Betriebsspannung ist) Nur das ich das ganze auch verstehe was ich aufgebaut habe. Hab die Schaltung jetzt aufgebaut und funktioniert wunderbar, hab zwar noch keinen ADC dran hängen abr die Ausgangsspannung ändert sich abhängig von der Kraftaufwirkung des Piezos :-) Fangt also schon mal ganz gut an! Danke! Valerian Joa mach ich beim nächsten mal, hab mir aber gedacht ich poste es hier weils ja ums selbe geht und so^^
:
Bearbeitet durch User
Hätte jemand vielleicht Zeit der mir die Fragen noch kurz beantworten könnte? Wäre echt nice, schon langsam versteh ich einigermaßen so nen OP aber würde mir trotzdem sehr weiter helfen, Danke Valerian :)
Valerian Valerian schrieb: > Hab die Schaltung jetzt aufgebaut und funktioniert wunderbar, hab zwar > noch keinen ADC dran hängen abr die Ausgangsspannung ändert sich > abhängig von der Kraftaufwirkung des Piezos :-) Fangt also schon mal > ganz gut an! Klasse! Welche Operationsverstärker hast Du nun verwendet? MIt welcher Betriebsspanung läuft das gerade? Wenn das die Schaltung von oben http://www.mikrocontroller.net/attachment/215753/Piezo_to_ANalog.gif mit den LM324 ist, dann ist das invertierend. Eingangswiderstand 100K poti parallel 22K zum OPV, je nach Potistellung bewirkt dieser Eingangswiderstand ein Einbrechen deiner Piezorohspannung. Wenn Du "lauter" drehst, bricht die Spannung mehr zusammen, weil langsam der 22K zum tragen kommt. Es wird dann irgentwie nicht wirklich lauter, nur der Frequenzgang deiner Piezoscheibe ändert sich etwas. Wird aber soo schlimm nicht sein, der Effekt. Messbar auf jeden Fall. Von den Ausgängen auch hier mit Reihenwiderständen zum ADC. ZU hochohmig dürfen diese lt. Datenblatt leider auch wieder nicht werden... bau es mal auf, das passt da schon alles.Da geht soo schnell nichts kaputt. Höchstens, das der ADC bei 0x03ff (oberhalb seiner Referenzspannung) "hängen" bleibt, wenn er am Eingang (etwas) übersteuert wird. kannst Du denn den ADC schon per SPI auslesen?
eigentlich müsste man die Spannung der (+)IN Pins auf halbe Betriebsspanung ziehen und erst einmal die (wechsel)Spannung vorverstärken. Diese mit einem zweiten OPV dann aktiv gleichrichten und auf 0-3.3V normieren. Aber so, wie die Schaltung im Netz steht, geht es erstmal auch. Trotz negativer (Piezo)Spannungsspitzen am Eingang der OPVs... Wenn man auf die Trommel drischt, geht der Impuls ja auch ins negative hinein, wenn das Trommel"fell" sich hin und her bewegt. Ich wollte das nur anmerken, das ich mir schnon im klaren bin, das die Schaltung eigentlich "Pfusch am Bau" ist, wie so vieles, was man im Netz so findet.
So "mussten" wir das früher bauen. Mit plus und minus 15Volt. nicht mit 3.3V ... Das man's mal gesehen hat ;) Davon dann ACHT Stück!
Axel R. schrieb: > MIt welcher Betriebsspanung läuft das gerade? Joa freut mich richtig! :-) Ähm LM324, passt einfach prächtig da ich 8 pads bauen will und die haben ja 4 OP drinnen. Danke für die beschreibung, wird schon ein bisschen klarer das ganze! Axel R. schrieb: > kannst Du denn den ADC schon per SPI auslesen? Noch nicht ganz Schaltung alles aufgebaut aber morgen kommt ein Freund zu mir der programmiert, hat auch schon ein Programm entworfen um die Analogen Werte vom MCP3008 über die SPI Stelle einzulesen! Na, dann schu ma mal wies morgen ausschaut, werd mich auf jeden Fall melden! :-) Danke Valerian
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.