Hallo, ich habe eine elektronische Zündung gebaut und programmiert. Das Programm habe ich auf meinem Pollin Eval Board getestet (das war der totale Drahtverhau) und es funktionierte tadellos (16Mhz). Jetzt habe ich ein Layout für die Schaltung gemacht und es funktionieren manche Sachen nicht mehr (bei 16Mhz). Anbei ist ein Bild des Layouts und eine kurze Beschreibung wo welche Signale anliegen. Wenn ich den Clockdivider einstelle und alles mit 2Mhz läuft, gehts. Es gibt z.B. zwei PWM'S (50Hz) deren Pulsweite man mittels Tastern einstellen kann. Manchmal reagieren die Tasten, machnmal nicht. Und wenn sie regieren dann nicht richtig. Und das Programmieren mittels ISP funktioniert bei 16Mhz auch nicht mehr. Ich habe die lange Drahtbrücke unter dem Controller entfernt und die RESET-Leitung direkt an den Portpin gelötet...nützt auch nichts. Die PWM-Signale die der Controller erzeugt, kommen aber alle ordnungsgemäß an den entsprechenden Pins raus. In dem Bild vom Layout habe ich das Polygon ausgeblendet und die Masseverbindungen entfernt, damit man besser sieht was auf Masse liegt. (unrouted) Normalerweise iss alles voller Masse. Was ist an dem Layout so falsch, dass es nicht funktioniert? Ich möchte eine neue Platine machen, aber dazu müsste ich wissen was ich verändern muss. Ich würde mich freuen, wenn ihr ein paar Tips für mich habt! Gruß Paul
zwar nicht das sauberste layout dass ich je gesehen habe, aber müsste eigentlich funktionieren... der quarz und andere bauteile überschneiden sich gemäss deinem *.png vom layout minim mit den pad's des atmega - wäre es möglich, dass auf der platine ebenfalls eine quasi verbindung besteht? poste mal das schema
Ich tippe auf Kurzschlüsse durch Ätzfehler oder Lötzinn oder ähnliches. Kalte Lötstellen etc. MFG Falk
Hallo, ich hatte mit härterer Kritik über mein Layout gerechnet, aber vielleicht kommt die ja noch. ;-) Anbei der Schaltplan. Ich habe nochmal auf der Platine nachgesehen und es überschneidet sich nichts. Der Quarz iss in der Realität nicht so groß, wie es im Layout scheint. Dennoch danke für den Tip. Ich bin wirklich erstaunt, dass es nicht geht. Ich habe vor einiger Zeit einen Zähler mit 4 7-Segmentanzeigen auf Lochraster aufgabaut. (Atmega8 16Mhz) Hat bei ersten mal funktioniert, lässt sich auch programmieren. Die Platine ist sehr viel unaufgeräumter, die Leitungen sind um das Vielfache länger und es verlaufen sogar Drahte über die Platine und unter dem Prozessor durch. Das heißt überall liegen Leitungen die eine Art Takt führen, sowas gibts hier ja gar nicht. Es gibt auch 6 Tasten die über ein 20cm langes Kabel angeschlossen sind. (die Schaltung der Tasten ist die gleiche wie in diesem Fall) Auch die funktionieren tadellos. Ich schau mir die Platine jetzt nochaml genau an, vielleicht finde ich ja was. Gruß Paul
Hi, ich denke auch das das Layout nicht wirklich das Problem sein kann.
Setze die Fuses mal auf "Full Swing Crystal Oscillator" und längste Start-Zeit. Ist bei 16MHz und schneller besser.
Ach und erhöhe CBLOCK1 mal auf 10µF. Insgesamt wird die Eingangsbeschaltung für die Spannungsversorgung nicht den Anforderungen in einem Kraftfahrzeug standhalten: keine Sicherung, kein Verpolschutz, kein Filter, keine Spannungsbegrenzung.
Hallo, @Travel Rec: die Fuses sind genauso gesetzt wie du es beschreibst. Ich habe es sogar schon mit diesem Fuse Berechnungsprogramm überprüft und auch im Forum habe ich diese Fuse-Einstellung gefunden und sie ist mit meiner konform. Deine Bedenken sind natürlich richtig, dem Einsatz im KFZ wird sie nicht standhalten. Das muss sie auch nicht, da die Zündung für einen 5ccm Modellmotor ist, der in einem RC-Trcuk arbeitet. Das mit den 10µF probiere ich jetzt sofort mal aus. Vielen Dank Gruß Paul
Basisstrom für T1 könnte zu klein sein, T2 schaltet nicht komplett durch- ist das Absicht?
Das mit dem 10µ Kondensator hab ich gerade probiert und es hat leider nichts gebracht. Auch das Nachlöten aller Lötstellen hat nichts gebracht. @Bensch: Vielen Dank für den Hinweis. T1 sollte genug strom an der Basis bekommen, hab ich gestern getestet. Ich werde eventuell auch nen anderen Transistor nehmen. Kennst du zufällig einen Darlington der viel Verstärkung hat und kurzzeitig so 10A aushält (so 2-3s)? Bei T2 werde ich das noch ändern, aber momentan bin ich mehr damit beschäftigt dass der Prozessor ordentlich läuft.
Hat der mega88 ein CKOPT fuse? Wenn ja, dann mal umprogrammieren.
Atmega88 hat kein ckopt fuse. Also eben hab ich nochmal alles probiert. Prgrammieren in der Schaltung mit 16MHz ist unmöglich. Komischerweise funktionieren die Tasten auf einmal. Nun iss das dumme, eigentlich soll der Prozessor bei 18,432MHz laufen, wegen der UART. Mit 18,432 MHz funktionieren die Tasten nicht mehr, ganz zu schweigen vom Flashen. Es ist auch wirklich ein Atmega88-20PU ich hab extra nochmal draufgeguckt. Die Tasten funktionieren so: Es gibt 3 Stück: SET, INC und DEC Wenn man DEC gedrückt hält und schaltet dann den Prozessor ein, wird bevor das eigentliche Programm anfängt in ein Unterprogramm gesprungen in dem man die Anfngs- und Endwerte der Servos (Tastverhältnis der PWM) einstellen kann. Zuerst wird der Anfangswert für Servo 1 (im Schaltplan Pump) mit INC bzw. DEC eingestellt. Drückt man auf den SET-Taster wird diese Stellung im EEPROM gespeichert. Jetzt wird der Endwert von Servo1 eingestellt und gespeichert. Wieder SET-Taster drücken und es folgt der Anfangswert von Servo 2 usw. Sind alle eingestellt, wird das Unterprogramm verlassen und es wird in die Hauptschleife gesprungen. In das Unterprogramm komme ich rein, (LED-geht-an-debugging). Wenn ich dann INC oder DEC drücke enstehen irgendwelche sinnlosen Werte für die PWM und die Servos spielen verrückt. Wie gesagt, auf dem Eval Board gehts (16Mhz) und in der Schaltung auch (16Mhz) aber mit 18,432MHz..Pustekuchen. Der Code iss mit aktuellen AVR-GCC und dem aktuellen WinAVR in C geschrieben, aber an dem kanns doch nich liegen.
Hast Du denn jetzt nochmal ein Layout ohne Luftlinien, wo man sehen kann, was genau wo angeschlossen ist?
>Manchmal reagieren die Tasten, machnmal nicht. ok. Bleibt der Controller dabei auch ganz stehen ? Oder läuft er weiter? Gibt es einen Reset? >Und wenn >sie regieren dann nicht richtig. Was heisst das?
Hallo, also hier ist das Layout ohne Luftlinien. Ich hoffe ihr findet was, damit mich dieser dumme Fehler loslässt. Ich habs echt satt. Habe eben mit dem Oszi gemessen, der Controller stürzt nicht ab. Es gibt keinen Reset. @Analog: Wenn ich auf die Tasten drücke, passiert meißtens gar nichts. Wenn was passiert, dann gibt es 4 Möglichkeiten: 1. ein paar (manchmal 1 manchmal auch bis zu 6) Tastendrücke machen genau das was sie sollen: Das Tastverhältnis erhöhen bzw. erniedrigen 2. das PWM Signal geht komplett auf Low-Signal (warscheinlich weil die Vergleichswerte 0 werden) 3. das PWM Signal geht komplett auf HIGH-Signal (warscheinlich weil die Vergleichswerte 255 werden) 4. es stellt sich einmal zufällig irgend ein Tastverhältnis ein Nach jeder dieser vier Möglichkeiten reagieren die Tasten wieder so sporadisch. Der eingestellte Blödsinn wird jedoch im EEPROM abgespeichert. Prellen kann es nicht sein, da die Tasten nicht prellen, was ich nachgemessen habe. Und da die Tastenabfrage in einem absolut zeitunkritischen Bereich iss (vor dem Eegentlichen Programm), habe ich zum Software-Entprellen quick and dirty einfach delay's mittels _delay_ms(xx) reingemacht;....hat auch nichts genützt.
Ich glaube, es würde mal Sinn machen, auf den Code zu schauen.
Paul P. wrote: > Prellen kann es nicht sein, da die Tasten nicht prellen, was ich > nachgemessen habe. Wenn Du kein Prellen siehst, dann ist Dein Oszilloskop kaputt. > zum Software-Entprellen quick and dirty einfach delay's mittels > _delay_ms(xx) reingemacht;....hat auch nichts genützt. Eine Entprellroutine im Timerinterrupt hat den Charme, daß man nie wieder quick and dirty machen muß. Man fügt sie ein und vergißt sie dann. Vergessen kann man sie deshalb, weil sie nicht unnütz wartet und damit den Programmfluß zur Sau macht. Sie hat also keine Seiteneffekte, die man beachten muß. Peter
Die 100k Pull-Up am Reset-Eingang sind u.U. ein bisschen zu viel. Vielleicht mal mit 10k probieren und zusätzlich 10n gegen Masse?
Was ich bemerkt habe, die Quarz Kondensatoren sollten eigentlich die Masse vom uC nehmen, und nicht an der generellen Masse angeschlossen werden, zumindest mache ich das so.
Du hast parallel zu den Pulldown Widerstaenden der Tasten einen Kondensator von 330nF angeschlossen. Jedes mal wenn du die Taste drueckst wird der Kondensator aufgeladen. Dabei laesst er erstmal einen kraeftigen Ladestrom fliessen. Wenn der auch nur kurz ist , fliessen dort doch einige Ampere. Das koennte deinen Prozessor schon ausser tritt bringen. Ausserdem hast du damit einen hohen verschleiss an den Kontakten des Tasters. Also entweder den Kondensator rausschmeissen oder in Reihe zum Taster einen kleinen Widerstand legen von um die 100 Ohm. Gruss Helmi
Was für ein Spannungsregler ist verbaut ? Du gehst mit 9V an die Schaltung, ist der Regler dafür ausgelegt ?
@Helmut Lenzen (helmi1) >dort doch einige Ampere. Das koennte deinen Prozessor schon ausser tritt >bringen. Das wird es wahrscheinlich auch. Schliesslich hängt hinter dem Spannungsregler an Vcc nur 2x 100nF dran. Deren Ladung teilt sich dann auf 200+330=530nF auf, macht 200/530=37% der Nominalspannung. Uuups :-0 Diese Hardwareentprellung ist Mist. Das macht man anders, siehe Entprellung.Praktisch entprellt man sowas in Software. MFG Falk
Hallo, @Peda Natürlich prellen die Tasten alleine, aber durch die Pulldown Widerstände zusammen mit dem Kondensator prellen sie nicht mehr. Daurch brauche ich keine Softwareentprellung. @BC Das iss mir gestern auch schon eingefallen, aber bei dem Pollin-Board ist das auch so gemacht. Ich werde dennoch mal auf 10k gehen. @schris Ich weiß nicht genau was du meinst. Bei mir iss die Masse generell generell. Masse ist doch der gemeinsame Bezugspunkt der gesamten Schaltung. @helmi Die 330nF/33k sind in der Schaltung von dem Pollin-Board. Wegen dem Ladestromstoß habe ich schon 100nF/100K genommen. Ich hab nur vergessen das im Schalplan zu ändern. Das macht es zwar noch nicht viel besser, aber dass es so schlimm is dachte ich nich. Ich hab das gestern Nacht nochmal gemessen. Die Spannung schwankt für ca. 1µs um +/- 0,7V. Das is sauviel. Dabei fällt mir gerade ein, dass ja ein Widerstand eigentlich ausreicht. Das probier ich dann gleich aus. Ich weiß schon, eigentlich entprellen fast alle mit Software, aber mir gefällt es besser das mit Hardware zu machen. @pete77 Der Regler ist ein stino 7805. Ich wollte eigentlich nen LM2940, weil die Schaltung später mal en nem 7,2V NiMH Akku arbeitet. Übrigens: bei Reichelt kostet der 44 cent und bei big blue C (festhalten) 2,88EUR. Eine Frage hab ich aber noch. Wie Lang darf ein ISP-Kabel sein. Ich habe ein 50cm langes Flachbandkabel benutzt. (bei 16Mhz gehts nich, bei 2Mhz gehts). Vielen Dank für eure Hilfe, ich werde das jetzt gleich mal alles auprobieren. Gruß Paul
>Die 330nF/33k sind in der Schaltung von dem Pollin-Board. Dann hat Pollin das auch nicht richtig gemacht. >Ich weiß schon, eigentlich >entprellen fast alle mit Software, aber mir gefällt es besser das mit >Hardware zu machen. Kann man ja machen dann aber richtig. Also Widerstand in reihe zum Taster. Gruss Helmi
Helmut Lenzen wrote: > Du hast parallel zu den Pulldown Widerstaenden der Tasten einen > Kondensator von 330nF angeschlossen. Jedes mal wenn du die Taste > drueckst wird der Kondensator aufgeladen. Dabei laesst er erstmal einen > kraeftigen Ladestrom fliessen. Wenn der auch nur kurz ist , fliessen > dort doch einige Ampere. Ja, das ist mit Abstand die schlimmste Lösung. Wenn Dir die Kondensatoren so gut gefallen, dann aber immer parallel zum Taster, damit die Stromspitzen nicht über VCC fließen, sondern nur über den Taster. Peter
Also ich würde auch bei den Pullups/Pulldowns (Kann auf die schnelle nicht erkennen ob up oder down) suchen. Die 330nF würde ich entfernen. Auch sind die Taster wahrscheinlich nicht ganz genau dieselben, wie auf dem Pollinboard und zeigen vielleicht ein anderes Prellverhalten. Wenn Dein Controller nicht abschmiert ist nur an den Tastern, Widerstänen zu suchen. Gruß
Hallo, also ich hab jetzt folgendes mit Erfolg gemacht: -47µF Kondensator als zusätzlichen Puffer nach dem 7805 dicht an den µC. -Pullup für RESET auf 10k reduziert -470R Vorwiderstand um den Ladestromstoß zu reduzieren/eliminieren (5V/470R sind rund 11mA, das ist wie ne LED anschalten) -nen Sockel eingelötet, um die Quarze schnell tauschen zu können (ok das hat damit eigentlich nichts zu tun) Die Tasten funktionieren jetzt tadellos. Es ist keinerlei Spannungseinbruch beim drücken der Tasten wie zuvor messbar. (10mV Messbereich..geht im Rauschen unter) Der Widerstand hats echt gebracht. Ich muss zugeben es war töricht und unüberlegt so einen Murks zu bauen. Ich hätte das eigentlich gleich wissen müssen. Ich schäme mich. Aber jetzt bin ich voll zufrieden. Was allerdings immer noch nicht geht ist das Flashen. Ich denke das liegt an der zu langen Strippe. Und da ich hier nirgendwo nen 10-poligen Pfostenstecker herbekomme um ein ordentliches Kabel zu bauen, wird sich daran auch erstmal nichts ändern. Vielen Dank nochmal für die freundliche und schnelle Hilfe Gruß Paul
Kann das mal sein, daß Dein Programmierkabel gar keine Masse hat? Das kann ein Problem sein.
Bei mir geht das flashen ueber 2m Flachbandkabel problemlos. Gruss Helmi
Ja, das Kabel hat keine Masse, aber ich habe die Masse so angeschlossen. Das ist jetzt wirklich verzwickt, warum das nicht geht. Habt ihr eine Idee? Die Leitungen zum programmieren sind im Layout ja wirklich sehr kurz und es ist ja auch nichts anderes an Mosi, Miso und SCK angeschlossen.
@ Paul P. (dorpreuss)
>Ja, das Kabel hat keine Masse, aber ich habe die Masse so angeschlossen.
Merkst du was? Du willst schon wieder schlauer sein als der Rest der
Welt. Wohin das bisweilen führt hast du schon gemerkt . . .
Also schliess das ISP Kabel wie der Rest der Welt an und es wird
höchstwahrscheinlich funktionieren.
MFG
Falk
Hallo, @Falk Ich will nicht schlauer sein als die anderen. Ich schliße die Masse nur nicht mit an dem gleichen Stecker an wie MOSI,MISO,SCK,RESET, sondern an einem anderen Massepin auf meiner Schaltung sind ja genug da. Iss ja auch egal, ich hab vorhin ein altes Floppykabel zerlegt und ein ISP Kabel gebastelt. Jetzt gehts, es iss zwar eigentlich nichts anders aber es funktioniert. Es ist sogar länger als das andere und die lange Drahtbrücke unter dem Controller hab ich auch wieder reingemacht. Ich habe diesmal allerdings beim ISP Kabel (Flachbandkabel) jede zweite Ader auf Masse gelegt. Vielen Dank nochmals für eure Hilfe. Ich bin jetzt sehr zufrieden. Viele Grüße und fröhliche Weihnachten Paul
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.