Hallo Forum! Ich rufe mittels Timer1 eine Routine auf, in der ein DS18B20 Temperatursensor abgefragt wird. Jedesmal, wenn ich das mache, hängt sich das LCD auf, es kommt anfangs nur wenig, dann immer mehr Zeichenwirrwarr auf dem Display. Nachdem ich das Problem auf meine Lochrasterleiterplatte geschoben hatte, habe ich alles mal auf einem Breadboard mit komplett identischen (habe die Bauteile mehrfach) Komponenten aufgebaut. - LCD 4x20 Zeichen (HDxxxxx standart aus Ebay) - Atmega16 - Stabile 5V Spannungsversorgung Das Display hängt an: Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.3 , Db7 = Portc.7 , E = Portc.1 , Rs = Portc.0 Der 1wire Bus ist auf Pin D6. Wenn ich die Routine ohne Timer1 aufrufe, ist alles bestens, das LCD stellt die Werte sauber dar. Benutze ich aber den Timer1 als Aufruf über Interrupt, hängt sich das LCD immer mehr auf. Timer0 geht ebenso wenig wie Timer2, da hängt das Programm schon beim Aufruf des Timers. Ich verwende KEINEN externen Quarz, der interne ist auf 8Mhz eingestellt. Liegt hier die Ursache? Programmiert habe ich das Prog in Bascom. Viele Grüsse, Hubert
Hubert schrieb: > Ich rufe mittels Timer1 eine Routine auf, in der ein DS18B20 > Temperatursensor abgefragt wird. Die Abfrage braucht eine Mindestzeit. In welchen Abständen machst Du das, und wie?
Hallo! Ich rufe die Routine ca. alle 2sec. auf, und in der Routine selbst befindet sich bereits eine Wartezeit von 500µs, um die Werte auslesen zu können. Ohne Timer kein Problem... :( Man merkt auch, dass der µC noch arbeitet- nur das LCD will nicht mehr. Herzliche Grüsse, Hubert
Na, wenn es ohne Timer1 geht, dann wird hier die Ursache zu finden sein. Ohne kompletten Sourcecode und Schaltplan kann hier aber kaum jemand helfen.
>Der 1wire Bus ist auf Pin D6.
Auf welchem Port?
Versuch mal 10s Intervall. Wenn das geht, dann schrittweise verkleinern.
> Wenn ich die Routine ohne Timer1 aufrufe, ist alles bestens, > das LCD stellt die Werte sauber dar. Benutze ich aber den > Timer1 als Aufruf über Interrupt, hängt sich das LCD immer mehr auf. Du gibst aber nicht zufällig das erhaltene Ergebnis innerhalb der ISR aus? Oder? Wenn ja, dann hast du dein Problem gefunden. Wenn mehrere getrennte Code-Pfade mehr oder weniger gleichzeitig versuchen aufs LCD zu schreiben, dann ist Chaos vorprogrammiert.
Hubert schrieb: > Ich verwende KEINEN externen Quarz, der interne ist auf 8Mhz > eingestellt. Der ATmega16 hat gar keinen internen Quarz!
Hallo und schonmal vielen Dank für die Infos! @Karl Heinz: Hmm, ich bin noch nicht so weit in der Thematik. Ich rufe mit: Enable Interrupts On Timer1 Papststeuerung Nosave Enable Timer1 ...am Anfang des Programmes meine Subroutine "Papststeuerung" auf, während im laufenden Programm alles weitere in "Do...Loop"-Schleifen abläuft. Die Sub enthält folgenden Code: '######################## Lüftersteuerung ###################################### Papststeuerung: If Portd.7 = 1 Then Locate 1 , 20 : Lcd Chr(7) End If If Portd.7 = 0 Then Locate 1 , 20 : Lcd " " End If 1wreset 1wwrite &HCC 1wwrite &H44 Waitus 250 1wverify Dsid1(1) 1wwrite &HBE Sc(1) = 1wread(9) If Sc(9) = Crc8(sc(1) , 8) Then Dg = Decigrades(sc(9)) If Min1 > Dg Then Min1 = Dg If Max1 < Dg Then Max1 = Dg Temp_string1 = Str(dg) Temp_string1 = Format(temp_string1 , "0.0") End If If Auto = 1 Then If Dg => Hightemp Then Papst = 1 If Dg <= Lowtemp Then Papst = 0 End If 1wverify Dsid2(1) 1wwrite &HBE Sc(1) = 1wread(9) If Sc(9) = Crc8(sc(1) , 8) Then Dg = Decigrades(sc(9)) If Min2 > Dg Then Min2 = Dg If Max2 < Dg Then Max2 = Dg Temp_string2 = Str(dg) Temp_string2 = Format(temp_string2 , "0.0") End If If Auto = 1 Then If Dg => Hightemp Then Papst = 1 If Dg <= Lowtemp Then Papst = 0 End If Return Viele Grüsse und DANKE! für die ganzen Tipps, Hubert
Hallo! Ich habe jetzt sämtliche Möglichkeiten ausprobiert, und die beiden Locate-Befehle samt LCD-Befehlen aus der Routine rausgenommen- leider keine Besserung. Woran könnte das liegen? Selbst wenn ich in der Routine Zeile für Zeile auskommentiere- keine Besserung. Das ändert sich erst, wenn wirklich eine leere Routine aufgerufen wird?! Kann es sein, dass der Timer einfach nicht mit 1wire parallel klar kommt? Viele Grüsse, Hubert
Hubert schrieb: > On Timer1 Papststeuerung Nosave Du weißt schon, wofür das gut ist, oder etwa doch nicht?
Hallo, also spontan fällt mir kein Schnitzer in Deinem Programm auf. Aber ein paar Anregungen fallen mir vielleicht ein. - was bedeutet das NOSAVE in der Timerdefinition? Den habe ich noch nie verwendet. Hatte das nicht was damit zu tun, daß nicht alle Registerinhalte gerettet werden?! Geht Dir da vielleicht was wichtiges verloren, was nach und nach zu Fehlern auf dem LCD führt??! - bist Du Dir gaaaanz sicher, daß das Ausführen der Befehle in der ISR nicht länger dauert als das Timerintervall? Sieht zwar nicht so aus, aber... die Pferde vor der Apotheke?! ;-) - ist es sehr unschön soviel in der ISR zu machen. Kannst Du testweise mal in der ISR nur einen Merker setzen und den im Hauptprogramm abfragen, ob er gesetzt wurde?! Ist er gesetzt, löschst Du ihn wieder und arbeitest für den Fall die Programmteile (die vorher IN der ISR waren) im Hauptprogramm ab. Im Prinzip habe ich ein sehr ähnliches Programm wie Du geschrieben (damals) und da gab es keine Probleme mit ATmega16, Timer, LCD und DS1820. Wünsche Dir viel Erfolg!
Da war mue-c zeitgleich mit mir. ;-) Sollte meine Vermutung richtig sein?! Habe das NOSAVE echt nur noch ganz grob im Kopf und kann gerade nicht nachsehen.
Guten Morgen! DAAANKE euch beiden für die wertvollen Tips! Das "nosave" habe ich nur mal testhalber eingesetzt, weil es eben nicht alle Registerinhalte speichert, und somit weniger Platz benötigt. Es macht allerdings keinen Unterschied, ob mit oder ohne diesen Befehl gearbeitet wird. Das mit dem Merker werde ich heute nachmittag sofort antesten, es klingt ganz gut. Suspekt ist das alles wirklich. Egal ob Breadboard mit lediglich Atm16 und LCD oder Leiterplatte mit x-weiteren Beschaltungen und Entstörkondensatoren, Widerständen, OP-Amp, etc... - KEIN Unterschied. Teilweise ist es nicht nur das LCD, welches zu spinnen beginnt, sondern auch der Prozessor selbst, weil ich nicht mehr in "standby" schalten kann. (Merkbar an einem nicht mehr abfallenden Relais) @Meiner Einer: push/pop? Also Assembler. Nein, mit SICHERHEIT nicht. Es mag schneller und platzsparender sein. Lernen wollen würde ich das nicht für viel Geld. ;) Viele Grüsse, Hubert
Es wurde ja schon angesprochen. In "Papststeuerung:" werden zu viele Befehle abgearbeitet. Noch dazu das langsame 1-Wire Protokoll. Das wird schon mal ein Grund für das "komische" Verhalten sein.
Ach, was es noch sein könnte. Oftmals vergessen Einsteiger die Stacks anzupassen. Erhöhe mal: (code]$hwstack $swstack und $framesize[/code] Oftmals sind dies zu niedrig und man erhält unerklärliche Phänomene.
Hallo Karl und danke für deine Ausführungen! Die Stacks hatte ich auch schon vergrößert- leider ohne Erfolg. Deine Vermutung, dass im Unterprogramm "Papststeuerung" zuviele Befehle verarbeitet werden, scheint wohl die Lösung zu sein. (kann es gerade nicht testen) Ich frage mich zwar, warum das so ist, weil die Zeit ja erheblich kürzer ist, als die Anzahl der Aufrufe dazwischen, aber evtl. mag das der Prozessor dennoch nicht? Ich habe ja versuchsweise Stück für Stück von "Papststeuerung" auskommentiert und neu compiliert/geflasht- keine Besserung, auch nicht, als die komplette Maschinenroutine zum auslesen der Tempdaten auskommentiert war? Beispiele mit VU-Metern, die einen Timer benutzen, funktionieren jedenfalls ohne weiteres- daher kann es nur am Timer und an der Art und Weise, wie mein Display am µC hängt, schonmal nicht liegen. (zum Glück, man muss es ja langsam eingrenzen) Das einzige, was ich gestern noch getestet hatte, war das Einfügen von folgendem Code innerhalb meiner Do-Loop-Schleifen der einzelnen Unterprogramme: Do disable interrupts Programmgedönse incl. locate x,x:lcd xxx, etc... enable interrupts loop until taster = 0 Dies brachte zwar den Effekt, dass der Timer (wenn auch logischerweise langsamer) seinen Interrupt aufrief, und sich das Display nicht mehr aufhängte, aber im Umkehrschluss natürlich alles so langsam wurde, dass man mittels Tastendruck rein GARNICHTS mehr erreichen konnte. Gut, das war wohl auch nicht die feine Art des Programmierens, aber testhalber wollte ich es eben mal versuchen. Viele Grüsse, Hubert
Am besten wäre es, Du setzt nur eine Variable in der ISR. Beispielsweise so:
1 | On Timer1 TimerISR |
2 | Enable Timer1 |
3 | ... |
4 | ... |
5 | Do |
6 | ..... |
7 | If TimerVariable = 1 Then Call Papststeuerung |
8 | .... |
9 | Loop |
10 | |
11 | TimerISR: |
12 | Toggle TimerVariable |
13 | Return |
14 | |
15 | Papststeuerung: |
16 | ... |
17 | (hier Dein Code) |
18 | ... |
19 | TimerVariable = 0 |
20 | Return |
Hallo Karl! Jepp, genauso werde ich es heute nachmittag versuchen! Ich berichte dann erneut! Vielen Dank! Hubert
Was Karl sagt, ist genau das, was ich mit dem Merker meine! Mach das mal!! Was mich gerade SEHR stutzig macht: Du sagst, wenn du in der ISR die Interrupts disablest (komisches Wort...), dann wird der Timer DEUTLICH langsamer, aber es klappt?! Gut klar, die 250ms fallen natürlich ins Gewicht!!! Ich habe langsam die Vermutung, daß die 1-Wire-Sequenzen und LCD-Routinen zu lange brauchen, um in der ISR abgearbeitet zu werden. Mach das mal mit dem Merker. Wie gesagt, ich hatte damit keine Probleme und habe genau das gleiche gemacht!! Viel Erfolg und berichte bitte mal. Gruß Hackes
Drei mögliche Fehlerquellen. Beim Sprung in einer ISR, auch Timer-ISR werden die register R12-R15 nicht gesichert. Diese Register werden aber durch Single-Operationen verändert. Also in der Timer-ISR zuerst sichern. NOSAVE verhindert auch das Sichern alle anderen Register. Besser noch die neuste Version von BASCOM 2074 verwenden. Dort gibt es SAVEALL, dabei werden alle Register gesichert. Oder einfach: $asm Push R12 ' Register sichern, die nicht bei IRQ gesichert werden Push R13 ' um eine Single-Rechnung in der Hauptschleife nicht Push R14 ' während dieses IRQ zu stören. Push R15 $end Asm . . . . $asm Pop R15 ' Register wieder herstellen Pop R14 Pop R13 Pop R12 $end Asm verwenden. Störimpulse auf der Versorgungsspannung der LCD verursachen "chinesisches Zeichenwirrwar". Ein Kondensator, z.B. 1uF Tantal oder 1uF-Elko + 100nF Keramik sorgen für Ruhe. Der DS18xx benötigt nach dem Anstoßen der Messung eine interne Wandlungszeit von ca. 700ms (siehe Datenblatt). Erst dann kann auf die korrekten Werte zgegriffen werden. Joe
Hallo! @Hackes: jepp, dachte ich mir, dass du auf genau das hinaus wolltest! So werde ich es auf alle Fälle versuchen! Danke nochmals! :) @Joe: Die Fehlerquelle Kondensator kann ich ausschließen. Im Laufe meiner mehr oder minder verzweifelten Tests habe ich an beiden Spannungsversorgungs des Atmega16 jeweils nen 100nF, am Display zwischen GND und VCC einen, und an der Buchse zu den DS18B20 auch noch einen. (nach und nach, haben aber leider keine Verbesserungen gebracht) In meinem Wahn, endlich µC programmieren zu können, habe ich mir die neueste Bascom-Version gekauft, und bin eigentlich sehr zufrieden. (gut, der Simulator funzt- egal, was man einstellt- nicht mit dem LCD, aber da solls wohl Probleme geben) saveall werde ich somit auf jeden fall testen! es mag evtl. eine etwas suspekte Frage für einen Profi sein, aber: Wo müsste ich deine Assemblerroutine einbinden im Programm? Viele Grüsse und Danke, Hubert
Hallo! LEUTE, EURE TIPPS WAREN GOLD WERT! jetzt läuft der Timer-Aufruf absolut reibungslos. ich habe es mittels einer Sub und einer Variable realisiert- genau, wie es mir von euch vorgeschlagen wurde! :) perfekt! jetzt muss ich nur noch dafür sorgen, dass sich das Mistding nicht aufhängt, wenn ich die Endstufe aus/einschalte. Das wird auch noch spannend, aber zumindest Programmtechnisch ist jetzt ein GROßER Fortschritt passiert! Was noch ansteht: - messen von 590mV über einen Widerstand von 0,47 Ohm, und das leider nicht nur einmal, sondern auf der Verstärkerplatine 2x, wobei davon einmal +24V, und einmal -24V als Bezugsebene dienen müssen. Ich hab dazu auch schon viele Tipps bekommen, aber der Erfolg hat sich leider noch nicht eingestellt, und mit Operationsverstärkern kenne ich mich nicht gut genug aus, obwohl ich das Zeug vor Jaaahren mal gelernt habe und in der Industrieautomation tätig bin. Schande über mich- aber was mich tröstet: Sogar unsere hauseigenen Hardwareentwickler für SPS-Baugruppen beißen sich bislang die Zähne daran aus... :) Hat dazu jemand Tips? Schaltplan der Endstufe wäre dieser hier: http://www.firstwatt.com/pdf/prod_f5_man.pdf Dort aus Seite 12 möchte ich die 0,6V über R11 und R12 messen... DAS scheint noch was längeres zu werden. Viele Grüsse und wie immer vielen Dank- echt spitze, wie einem hier geholfen wird! :) Hubert
Hallo Hubert, na Glückwunsch und Prima, daß es nun funktioniert! Bezüglich den Jaaaahren, OPs und Automatisierung (jedoch auf DDC-Ebene statt SPS) haben wir wohl eine ähnliche Laufbahn gehabt, lach. Was das Messen in DEINEM Fall angeht, kann ich nicht wirklich viel sagen. Ich denke da hörst Du mal besser auf die richtigen Profis hier. Aber hat der Mega16 nicht auch einen differenziellen Eingang?! Würde es gehen, den Analog-GND auf -24V zu legen und mit einem analogen Eingang die Spannung über R12 zu messen und differenziell über R11 zu messen?! Ich habe aber keine Ahnung, ob die hohe Spannungsdifferenz ein Problem wäre. Habe mich mit den differenziellen Eingängen noch nicht beschäftigt. Wart mal ab, was die Profis sagen. @Joe: Das mit den Registern R12-R15 kannte ich auch noch nicht! Sollte ich mal im Hinterkopf halten. WOHER weiß man sowas???? Jetzt grübel ich aber, daß ich mit Sicherheit auch schonmal eine Single-Operation in einer ISR gemacht habe und keine Probleme hatte. Oder war das einfach Glück??! ;-) Gruß Hackes
Hi Hackes! Das mit dem differenziellen Eingang habe ich mir auch schon angesehen. Problem ist in jedem Fall, dass alles auf Masse bezogen ist. Ich bräuchte eine komplett Potenzialfreie Messung, damit sollte es die wenigsten Probleme geben. AAAABER mein Hauptproblem des aufhängenden Displays besteht weiterhin. Ich habe heute 4 Stunden lang versucht, der Sache auf den Grund zu gehen, weshalb sich mein Display aufhängt, wenn ich den Verstärker an/ausschalte. Einige absolut suspekten Kenntnisse habe ich gesammelt: - Das Gehäuse des Verstärkers besteht aus 10mm starken Aluminiumplatten (jaaa, etwas übertrieben, ich weiss ;)). Die Frontplatte (beide Monoendstufen sind als 45cm hohe Türme ausgelegt) wurde für das Display innen so ausgefräst, dass dies nach aussen hin annähernd bündig mit der Front abschließt. - Schraube ich die Frontplatte vom Rest des Amps ab, so hängt sich nix auf - Berühre ich mit der Frontplatte den Rest des Amps auch nur an einem klitzekleinen Teil, und schalte dann aus/ein: Display hängt sich auf. - Das ganze passiert nur, wenn ich über den Anschluss meiner OpAmp-Schaltung für das VU-Meter die Masse des Verstärkers mit der der Mikrocontrollerplatine zusammenführe. Jetzt kommt aber das definitiv Verwirrenste: WARUM um alles in der Welt hängt sich das Display NUR dann auf, wenn es in der Frontplatte sitzt und diese wiederrum den Rest des Verstärkergehäuses berührt?!? Denn eines kann ich nach zig Messungen und optischen Prüfungen absolut ausschließen: Display und Front haben ABSOLUT keinen einzigen Berührungspunkt. Diverse Messungen haben dies belegt. Schließe ich ein anderes Display an -> genau die gleiche Verhaltensweise. Jedesmal, wenn das LCD in der Alufront angebracht ist (4x verschraubt, keine Berührungspunkte auf Masse/VCC und sonstige Leitungen, garantiert!) und die Front wiederrum das Gehäuse berührt, und man aus/einschaltet -> Zeichenwirrwarr. Ich dreh echt bald ab. Woran kann das nun wieder liegen? Viele Grüsse, Hubert
Zur Veranschaulichung noch 2 Bilder. Leider noch ohne die Taster, diese Sind mittlererweile eingebaut, und natürlich sind auch alle Imbusschrauben korrekt installiert ;) Das Foto mit dem Display zeigt die Temperaturmessung beider Mosfets eines Monoblocks. Das klappt alles ganz prima... Wenn da nicht diese doofen Aufhänger wären, wenn man das Teil einfach nur in Standby schickt. :( Viele Grüsse, Hubert
Hallo Hubert, 10mm??? Aaaaaaaalter Schwede!!!! Überlebt auf jeden Fall den 3. Weltkrieg, was? ;-) Aber gefällt mir. Ideen hätte ich da auch genaug, aber leider fehlen mir die passenden Maschinen auf der Arbeit. Die differentiellen Eingänge beziehen sich jeweils auch auf GND?? Okeee, hätte ich mir was anderes drunter vorgestellt. Aber wie gesagt, noch nicht mit gearbeitet. Was da bei Dir so passiert ist ja mal echt seltsam. Und 1000%-ig sicher, daß keine elektrische Verbindung zwischen Display und Frontplatte besteht??!!! Wenn ich es richtig verstehe... - Display ist in der Frontplatte verschraubt - Frontplatte ist nicht am Amp-Gehäuse angeschraubt ---> keine Probleme Auch wenn die Frontplatte gaaaanz dicht vor dem Amp-Gehäuse steht??? Erst wenn du eine elektrische Verbindung zwischen Front und Gehäuse herstellst kommen die Probleme?! Klingt für mich, sorry, doch danach, daß das LCD irgendeine Verbindung zur Frontplatte eingeht. An Indunktion und Einstreuung mag ich nicht so ganz glauben, denn die wäre auch da, wenn die Frontplatte ganz nah am Gehäuse stehen würde! Kannst Du das LCD mal mit Kunststiffschrauben und irgendwie mit Papier GARANTIERT isoliert einsetzen?! Oder irgendwie mit "Siemens-Lufthaken" hinter dem Frontplattenausschnitt positionieren und alles zusammenschrauben. Würde mich interessieren, was dann passiert. "Das ganze passiert nur, wenn ich über den Anschluss meiner OpAmp-Schaltung für das VU-Meter die Masse des Verstärkers mit der der Mikrocontrollerplatine zusammenführe." Den Satz verstehe ich nicht sooo ganz. Welcher OP und VU-Meter? Son bischen Schaltplan wäre jetzt mal ganz hilfreich!!!! Welche Spannungen, Komponenten hast Du. WELCHE Massen sind wie verbunden? Meine Glaskugel ist gerade in der 1000-jährigen Inspektion! ;-) Ne im Ernst, man muß mal wenigstens nen Schema sehen, was wo verbunden ist. Auch wenns Off-Topic ist. Dein Projekt interessiert mich. Werde mir das PDF mal speichern. Wie klingt denn der Amp und wie problematisch war der Aufbau. Würde mich über paar Bilder freuen. Zeig mal! ;-) Gruß Hackes
LCDs haben oftmals einen Metallrahmen. Wenn er es nicht schon ist, sollte er mit CPU-GND verbunden werden. Und er darf keinen Kontakt zur Frontplatte haben! Peter
Hallo Peter, an den Rahmen hab ich auch schon gedacht. Aber wenn ich ihn richtig verstehe, dann hat auch der keinen Kontakt zur Frontplatte. Aber sollte er nochmal prüfen.
Hallo! Nachdem ich mich hier anmelden musste, jetzt unter dem Namen Firstwatt zu finden... ;) @Hackes: Jepp, 10mm sind echt etwas dick. Aber ich wollte einfach was für die Ewigkeit bauen. Seit September '11 sitz ich an den Dingern. Die Rückwand ist zugleich Kühlkörper und beinhaltet Chinch-Eingang und LS-Ausgang, sowie Netzschalter und -buchse. Fotos von Innen gibts erst, wenn ich etwas Ordnung drin hab- aktuell gefällts mir noch nicht... Klanglich habe ich wirklich seltenst etwas besseres hören dürfen. Durch den simplen Aufbau OHNE einen einzigen Kondensator im Verstärker (siehe PDF) wird auch nichts vom Signal verfälscht. Systembedingt ist es (je nach ohmscher Belastung) ein Class A Aufbau, das heisst, man hat hohe Verlustleistung, aber eben auch eine richtig geniale Hochtonauflösung. (und ich bin kein Mensch, der auf irgendeinen Voodoo oder sonstigen Hifi-Hokuspokus eingehen würde!) Als Trafo verrichtet ein 300VA Aparillo mit 2x18V sekundär seinen Dienst. Gleichgerichtet und mittels 28x4700µF Kondensatoren geglättet geht der Saft in den Verstärker. Platinen dafür kann man aufgrund des simplen Aufbaus entweder selbst basteln, oder aber (so habs ich gemacht) für ne schmale Mark auf www.diyaudio.com bestellen. genauer link: http://www.diyaudio.com/store/europe/ Das schöne ist auch irgendwo der Selbstbaugedanke. Kaufen kann jeder... Zu meinem Problem mit dem LCD: Gestern konnte ich nicht weiter kucken, aber heute werde ich auf alle Fälle nochmals überprüfen, ob auch der Displayrahmen KEINEN Kontakt zum Alu hat. Ich bin mir da aber ziemlich sicher. Das ist zwar das einzige Bauteil am kompletten LCD, welches ich nicht gegen die Alufront gemessen hatte, aber der Rahmen an sich ist auf der Leiterplatte widerrum auf Masse gelegt. Kann ich, um Störungen zu minimieren, die Datenleitungen irgendwie niederohmiger und somit stabiler gegen äussere Einflüsse machen? (So in der Art Pulldown/up) Eventuell liegts ja MIT daran, dass die Flachbandleitung 25cm lang ist und man sich damit ein paar Interferenzen einfängt? Bringt ein Ferritkern um die Flachbandleitung evtl. Besserung? Herrje, wenn man wenigstens einen Ansatzpunkt hätte... @Peter: Hmm, über die Displayleiterplatte sollte ich eigentlich auf CPU-GND hängen. Ich kann allerdings separat noch eine Masseleitung von der µC-Platine zum Displayrahmen legen, das werde ich auf alle Fälle versuchen! Viele Grüsse und wie immer DANKE euch! Hubert edit zum Thema Schaltplan: Es gibt leider noch keinen. Meine µC-Platine hängt zB. am Laptop (potenzialfrei vom Verstärker) und im Moment des Zuschaltens vom Verstärker kommen beide GND-Potentiale zusammen. (also die des Verstärkers mit der der µC-Platine) Masse ist aber nicht geschalten. Der Ringkerntrafo des Verstärkers hängt an L1 und N (logisch), ich schalte einpolig an/aus. Der µC bekommt seinen Saft entweder über den ISP-Programmer vom Laptop, oder per Labornetzgerät und Spannungsregler. Immer das gleiche Resultat- Display hängt im Falle des Ausschaltens des Verstärkers. Auch beim Einschalten kommen Aufhänger vor, jedoch nicht so häufig, wie beim Ausschalten. Was noch wichtig ist: PE ist am Alugehäuse angeschlossen (logisch) und wird (noch logischer!) auch nicht geschalten. Die gleichgerichteten 18V des Trafos haben auf der GND-Seite über einen NTC in Reihe eine Verbindung zum Alugehäuse- um Brummfrequenzen zu unterdrücken.
Hey Hubert, bin leider was im Stress und wenig Zeit zum Schreiben. Wenn wieder etwas mehr Zeit da ist, nächste Woche, dann werd ich Dich sicher mal kontaktieren zu Deinem Amp, wenn ich darf. Die Seite von Firstwatt und Unterseiten habe ich schon gelesen (so einiges zumindest). SEHR interessant. Wäre mal was für den Winter. Zu dem Selbstbaugedanken erhälst Du meine VOLLE Zustimmung. Grundsätzlich solltest Du die LCD-Leitungen schon "kurz" halten, sind immerhin Daten. Beim Basteln hatte ich auch schon lange Flachbandleitungen ohne Probleme genommen und ging. ABER in Deiner Umgebung in dem Amp und den Leistungen würde ich da mal keine Hand mehr ins Feuer legen!!! Du betreibst also µC-Platine zur Zeit galvanisch getrennt, schonmal gut! Labornetzteil wäre in meinen AUgen ja erstmal perfekt! Bin gespannt was passiert, wenn die Frontplatte nur ganz dicht am Gehäuse steht, aber noch keinen Kontakt bekommt. Aber warte erstmal Deine Ergebnisse ab. Mit den Ferritkernen habe ich keine Erfahrung! :-( Wäre abgeschirmte Leitung möglich? Schirm auf GND legen. Vielleicht mal Aluminiumfolie ums Flachbandkabel wickeln zum Testen. Wobei "Eisen" wohl besser wäre als Aluminium, aber ja nicht so möglich. Du könntest vielleicht das LCD in regelmäßigen Abständen neu initialisieren lassen. Aber das wäre ne Fuschlösung. ;-) Pullup und Downs werden nicht zielführend sein. Ich habe aber mal von 100-Ohm-Widerständen in den Datenleitungen gelesen. Ob das was bringt... ich habs nie versucht, da kein Bedarf bestand. Viel Erfolg und Gruß, Hackes
Hallo Hackes, wirst lachen, das mit der Alufolie hab ich wirklich versucht- leider ohne Erfolg. Ich konnte aber weitere Erkenntnisse sammeln: - Eine Berührung des LCD zur Frontplatte kann ich tatsächlich ausschließen- auch zum Displayrahmen.-. Die 4 nicht belegten Datenpins habe ich alle auf Masse gelegt- kein Erfolg - Alufolie ums Flachbandkabel- kein Erfolg - Die Front braucht tatsächlich KEINE Verbindung zum Rest des Verstärkergehäuses, es reicht, wenn alles seeehr nah dran ist. Ganz schlimm wirds, wenn die µC-Platine auch noch im Inneren des Verstärkers liegt. (dann wird das Display pauschal schwarz g) - Minimal besser wirds, wenn man die Masseverbindung fürs VU-Meter trennt, aber es ist nicht weg, somit scheint das nicht primär ursächlich zu sein. Alles in allem werde ich jetzt folgendes angehen: - Die Flachbandleitungen des Displays durch Stiftleisten/Buchsenleisten ersetzen und den µC somit direkt unter das Display basteln. - Die Leitungen zu den Tempsensoren von denen des Chinch-Audio-Signals trennen und zudem noch schirmen (evtl. einfach ne Lan-Leitung verwenden) Langsam verzweifle ich wirklich... Zum Thema Verstärker generell: Klaro kannst mich nerven! Es ist fürn Winter wirklich ein schöööönes Hobby! Viele Grüsse, Hubert
Hallo Hubert. Aber sicher werde ich Dich nerven! ;-) Ich hoffe nur ab dem Winter endlich wieder mehr Zeit fürs Hobby zu haben. Ok, daß mit der Frontplatte gaaaanz nah dran hab ich vermutet, auch wenn ich da keine direkte Erklärung für habe. Ich wollte nur die Bestätigung, daß keine elektrischer Kontakt da sein muß. Hmmmm... mysterious... Von den nicht benutzten Datenleitungen auf GND bin ich natürlich ausgegangen. WIE ist das mit dem VU-Meter zu verstehen???? Das verstehe ich noch nicht so ganz. Nur mal ne Idee: Wo du gerade von den Temperaturleitungen sprichst, kam es mir so. Lass die Leitungen zu den DS1820 mal bitte ganz von der Platine ab. Vielleicht fängst Du da die Störungen ein?! Wo ich mal blöde Effekte hatte: Ich hatte 7-Segmentanzeigen an einem Port und die gemultiplext. Ich sag mal Port B. Dort waren die drei Transistoren für die Segment-Transistoren. Auf meinem Versuchsboard war der DS1820 an einem anderen Port C. Auf der fertigen Platine habe ich dann den DS1820 mit auf den Port B gelegt, weils vom Layout praktischer war. Und dann spielten die Segmentanzeigen verrückt, weil der 1-Wire mit auf ihrem Port lag. Die Ursache habe ich nie ergründen können. Aber habe den DS1820 dann auf nen anderen Port gelegt und Ruhe war. Man soll sich ja an den letzten Strohalm klammern, wenn man nicht gerade der Dipl.Ing. ist. Habe zwar Elektroniker gelernt, aber bin eben mehr in der Gebäudeleittechnik, BUS-Systemen und Prozessleitelektronik zuhause. Gruß Hackes
Hi Hackes! Gestern und heute konnte ich weitere Erkenntnisse sammeln: - auch das andere Display, bei dem die Flachbandleitung wirklich NUR für selbiges verwendet wird, und nicht wie beim andern noch die Spannung und das Signal für die beiden Taster mitführt, hängt sich genauso auf. - stecke ich die Temperatursensoren ab (da hängt auch das Chinch-Signal des Verstärkers für das VU Meter drauf) --> dito Aufhänger. - kurzum: es reicht absolut, wenn das Display in der Alufront sitzt, und diese wiederum seeehr nahe am Rest des Verstärkergehäuses. Kann man das LCD wirklich irgendwie minimal zeitversetzt resetten? Das wäre die einzige Lösung, die mir dazu einfällt, ohne eine Front aus Kunststoff einsetzen zu müssen- das würde ich um jeden Preis vermeiden wollen. Viele Grüsse, Hubert
Öhm ... mal ne doofe Frage ... Auf welchem Potential liegt denn Dein Gehäuse? Wenn ich das richtig gelesen habe nimmst Du das Gehäuse als Kühlkörper für die FET, hast Du die auch elektrisch gegens Gehäuse entkoppelt (Glimmerscheibe u. Kustoffschraube) oder direkt aufgeschraubt? Laut Datenblatt ist die Rückseite des IRFP9240, der in Deinem PDF aufgeführt ist, mit Drain verbunden.
Hallo Weinbauer! Das Alugehäuse ist auf PE, also Erde gelegt. Beide Mosfets sind natürlich mit Glimmerscheiben elektrisch vom Gehäuse entkoppelt. Langsam tendiere ich dazu, irgendwie das Display zu resetten. Ich weiß nur noch nicht, wie das in Bascom zu machen ist? Aktuell google ich dazu wie ein Verwirrter, habe aber noch keinen wirklichen Erfolg zu vermelden. Versuche, den Ringkerntrafo zu schirmen, schlugen bislang auch fehl- wenn es denn überhaupt der Trafo ist, der für diesen Displayeffekt sorgt? Vielleicht hat ja noch jemand Tips? Viele Grüsse, Hubert
Hallo Hubert, ohne es jetzt gerade ausprobieren zu können: INITLCD CLS Durch das initialisieren sollte das Display wieder gehen. Ich hab da aber noch ne ganz blöde Frage. Du schreibst, wenn Du den Verstärker AUSschaltest, dann hängt sich das LCD auf. Ööööhm, warum soll das LCD eigentlich noch an sein, wenn der AMP aus ist?! Gruß Hackes
Hey Hackes! DANKE für deinen Code, leider geht mit Initlcd garnix mehr, wenn ich den Befehl irgendwo im Listing unterbringe- kein Witz?! Ich verstehs zwar grad selbst nicht, aber es ist so... Wenn ich in meiner Standby-Sub am Anfang INITLCD stehen habe, bleibt das Display sogar aus, wenn ich in der Sub noch kein einziges mal war? :( Anscheinend arbeitet Bascom nicht jeden Befehl hintereinander ab... Das mit dem "Standby" ist eigentlich nur ein "Designgimmick": Der Hauptschalter des Amps sitzt auf der Rückseite. Somit kommt man nicht wirklich gut ran. Konzeptioniert war das Ganze damals natürlich OHNE µC- dieses Vorhaben hat sich erst danach ergeben, weil die Frontplatte irgendwie so nackt aussah, und ich ohnehin in diese Thematik wenigstens ein klein wenig meinen Fuss setzen wollte. Verwendet werden die beiden Verstärker an einer schaltbaren Steckdose- somit verwende ich den Hauptschalter an den Dingern ohnehin nicht wirklich. Leider ist es durch den hohen Einschaltstrom der beiden Ringkerntrafos schon öfter dazu gekommen, dass es mir im Wohnzimmer die 16A-Sicherung rausgehauen hat. Daraus entstand die Idee, den µC nicht nur zum messen von diversen Werten zu benutzen, sondern auch gleich für eine Standby-Schaltung. Und diese sieht bei mir aus optischen Gründen vor, dass im Display "Firstwatt F5 -standby-" stehen soll, wenn das Teil aus ist. (Und die Ringbeleuchtung beider Taster an ist) Ach bevor ich hier ohne Ende labere, mach ich doch gleich ein Bild und füge es mit ein... Hilfe, langsam weiss ich echt nimmer weiter... :(( Viele Grüsse, Hubert
Burschen, ich HABS! :) INITLCD funzt schon, allerdings muss man etwas mehr einfügen: Config Lcd = 20 * 4 Initlcd Cursor Off Noblink Waitms 250 HERRLICH! An sich ist sowas nicht die feine Art, das ist mir auch klar... aber gut, mit Bascom verschwendet man ja auch Speicherkapazität ohne Ende.(bin jetzt bei gut 11k Code, und habe meiner Ansicht nach nicht die Welt programmiert...) Jedesmal, wenn sich das LCD nun aufhängt (man kann es die 250ms bisschen erkennen), wird es artig resettet und gibt Ruhe. :) Eins steht jetzt noch an, dann sollte ich soweit sein, eine Platine zu designen: ich muss die 590mV durch R11/R12 messen können... Dazu habe ich selbst nach vielen Versuchen mit OP-Amps noch keinen Erfolg verbuchen können- leider. Viele Grüsse und immer her mit den Tips (es ist wirklich klasse hier!) Hubert
Hi >Burschen, ich HABS! :) >INITLCD funzt schon, allerdings muss man etwas mehr einfügen: >Config Lcd = 20 * 4 >Initlcd >Cursor Off Noblink >Waitms 250 Nein hast du nicht. Damit kaschierst nur dein Problem, aber löst es nicht. Ein LCD das nach der Erstinitialisierung noch mal Initialisiert werden muss funktioniert nicht richtig. MfG Spess
...Spess, da ich es nicht für kommerzielle Zwecke nutze, kann (muss?) ich durchaus mit diesem "Problem" leben. Anscheinend begünstigt mein Gehäuse eben diese Art von Interferenzen. Was sollte ich- deiner Meinung nach- noch versuchen, um das LCD zu entstören? Eventuell hast du ja eine zündende Idee dazu? Grüße, Hubert
GLÜCKWUNSCH Hubert!! :-D Ich hab mich gestern schon gewundert, weil ich in meinen Programmen auch ein INITLCD verwende (zumindest am Anfang!). Also Bascom arbeitet übrigens schon Schritt für Schritt der Reihe nach, mach Dir da keine Gedanken. Warum wartest Du eigentlich 250ms nach dem Init? Ist jetzt was schwer zu beurteilen, wenn man Dein Programm nicht sieht!! Hmmm... Du bekommst doch mit, wenn der Amp ausgeschaltet wird, oder? Wenn ich richtig verstanden habe, dann machst Du das doch über den µC!? Wenn sich das LCD nur dann aufhängt, dann mach doch das Init nur dann. Wie wäre es damit? Zum Speicherverbrauch: Naja, 11% erreichst Du relativ schnell. Schon allein wenn der ganze "Rumpf" der Deklarationen kompiliert wurde, hast schnell ein paar Prozent. Ich vermute, daß Du ein paar Berechnungen mit Fließkommavariablen machst, daß braucht relativ viel Speicher. Mach Dir aber keinen Kopf, wenn jetzt nur noch Logik und "Schönmachsachen" dazukommen, dann hast noch Speicher genug! Tjaaa... zu den OP-Amps. Was hast denn schon so versucht? Was hast Du für Vorraussetzungen? Positive und negative Spannungsversorgung vorhanden? Gibts keine ICs, die eine DC-Spannung galvanisch trennen? Gruß Hackes
Du hast irgendein Problem mit der GND-Verdrahtung und/oder Stromversorgung. Digital und analog zusammen in einem Gerät ist nicht ganz einfach. An einer Stelle müssen beide GND verbunden sein. Und es darf keine Erdschleife geben, durch die beide Ströme fließen. Es dürfen auch nirgends analoge und digitale Leitungen unabgeschirmt nebeneinander liegen. Alle Leitungen zum LCD sollten in einem Schirmgeflecht liegen. Oder am besten gleich den MC direkt hinter das LCD. Oder ein 2. MC, der das LCD ansteuert und vom Master seriell den Text erhält. Optokoppler können auch helfen. Peter
wenns mit den Codeergänzugen geht tippe ich auf Bugs auf der Seite des Codes ... zeig doch mal Dein Listing, evtl. findet sich da noch Optimierungsbedarf.
Mitunter braucht man garkeine OpAmp-Schaltung, die Atmels haben auch differentielle Eingänge mit Gain, die sich für solche Geschichten eignen. Hubert schrieb: > Das Alugehäuse ist auf PE, also Erde gelegt. > Beide Mosfets sind natürlich mit Glimmerscheiben elektrisch vom Gehäuse > entkoppelt. und auch an die Schrauben gedacht?
Hallo Jungs! @Hackes: Danke nochmal für den Tip! Ich initialisiere das LCD ja auch nur in meiner Subroutine "standby", also immer dann, wenn ich über meine Relaisplatine den Ringkerntrafo aus/einschalte. Sonst nicht... Wenn ich jedoch INITLCD in dieser Sub ohne weitere Befehle ausführen lasse, zeigt das LCD von Anfang an nichts an, obwohl ich TODSICHER noch nicht in dieser Sub war. Daher meine Vermutung, dass es Befehle gibt, die nicht seriell abgearbeitet werden... Wenn man ihm dann aber noch sagt, was er für ein Display dranhängen hat, dann läuft alles tiptop. Klar, eine saubere Lösung sieht irgendwo anders aus- aber nach diversen Versuchen wusste ich langsam wirklich nimmer weiter. Erstmal kann ich auf alle Fälle damit leben, man merkt es ja nicht wirklich... (mich nervt nur, dass ich es weiss ;)) Fraglich ist, wie lange das Display solche Spielchen verträgt. (ich meine nicht das initialisieren, denn das wird dem Ding egal sein, sondern eher diese EMV?-Einflüsse jedesmal ;)) Die Wartezeit nehme ich etwas zurück, dass sollte klappen. Zum Speicherverbrauch: Leider nicht 11%, sondern 11k, also in etwa 70% des Speichers sind bereits belegt- das ginge mit C oder ASM mit Sicherheit besser, würde mich aber in die Klappse bringen. Daher Bascom. Einfach, Durchschaubar und von früher noch als Sprache halbwegs bekannt. Gut, ich habe 5 Untermenüs, und in zweien davon kann man noch diverse Einstellungen vornehmen. Dann sichere ich Werte ins Eprom weg, lese diverse Analog- und Digitalwerte ein, etc... Das läppert sich trotzdem. Zum Thema 600mV messen: Tja, da gibts unendliche Lösungsansätze, aber keine für mich wirklich Berechenbaren (ich habe weder Elektrotechnik studiert, noch täglich damit zu tun, und war in Mathe/Physik wirklich immer gaaanz weit hinten im Ranking ;)) Es gibt von Maxim irgendwelche IC's für die Überwachung von Akkus, aber das Blick ich auch nicht wirklich... Bin aber sehr gewillt, was zu lernen. Wo ich auch noch hänge, ist die Tatsache, dass ich ja einmal +24V und -24V im Verstärker habe, die ich gegen Masse über diese beiden R messen müsste... :( Zu diesem Thema suche ich händeringend eine Schaltung, die ich einfach nachbauen und entsprechend abändern kann. Andererseits kann ich auch verstehen, dass mir das niemand ohne weiteres vorkauen wird... @Peter: Jepp, irgendwie ist es zumindest zu einem großen Teil ein GND-Problem. Meine letzten Versuche zeigten aber auch, dass selbst OHNE leitender Verbindung beider GND-Potentiale Störungen am LCD auftraten. Daher gehe ich auch von anderen Einflüssen aus... Deine Idee mit dem LCD direkt an der µC-Platine werde ich auf alle Fälle machen. Über eine Stiftleiste ist das schnell und sauber erledigt, und Platz für die Platine ist unter dem LCD locker noch vorhanden. (und es ist gleich alles viel kompakter und aufgeräumter) Ein LCD mit zwei Controllern anzusteuern wäre auch eine geniale Herausforderung, selbst wenn ich sie in Bascom meistern müsste. Daher: Ich denke, auf einem Breadboard übe ich das mal! :) @Weinbauer: Klaro, die Schrauben sind zwar aus Metall, der Mosfet ist jedoch bauartbedingt an dieser Stelle nicht leitend, daher kein Problem (habs gemessen). Die differentiellen Eingänge wären eine Idee, das Problem ist die hohe Spannung (24V) und vor allem die negativen 24V... Das Blicke ich einfach noch nicht... :( Bugs im Listing schließe ich eigentlich aus, da es wirklich vom Verstärker-zuschalten abhängt. Mein Programm ist mit Sicherheit hochgradig optimierungsbedürftig, da ich das letzte mal 1996 programmiert habe, aber gut- mit eurer Hilfe hier wird das täglich besser! :) Leider habe ich es gerade nicht hier, da ich in der Arbeit bin. :( Viele Grüsse, Hubert
Hallo Hubert, also auch bei den 11KB mach Dir mal keine Sorgen. Klingt für mich nach nem Mega16 und wenn der Platz eng wird, dann kannst Du den einfach durch nen Mega32 ersetzen. Mußte ich auch schonmal. Auch wenn BASCOM sehr verschriehen ist (jeder hat halt seinen subjektiven Liebling), kannst Du damit auch große Projekte anständig und stabil programmieren. Sauberes Programmieren ist natürlich Pflicht, aber das nimmt jede andere Programmeirsprache genauso übel. Ich bin sicherlich kein AVR und BASCOM Profi (bei weitem nicht), aber habe schon ein paar mittelgroße und auch große Projekte damit programmiert. In einem arbeiten LCD, UART, I2C, ADC, PWM und Timer friedlich zusammen und auch mit BASCOM läuft es stabil und zuverlässig. Mit C hätte es vielleicht 10% weniger Platz gebraucht, aber er reicht doch und flott ohne Ende! ;-) Daß Du Dir Wissen aneignest und selber denkst, versuchst und probierst, sollte wohl jedem hier schon aufgefallen sein. Von daher wird Dir sicher Hilfe angeboten werden. Ich bin dabei! ;-) Was hast denn von Maxim gefunden? Zeig doch mal und man kann sich mal Gedanken machen. Die differentiellen Eingänge hatte ich ja auch in den Sinn gefasst, aber ich vermute, daß das ABSOLUTE Potential zum GND von +-24V Probleme macht. Ich weiß es aber nicht, nur vermutet. Gruß Hackes
Hallo Hackes! Jepp, genau beim absoluten Potential liegt mein Problem. Das banale ist ja gerade: Hält man ein 3,95€ Multimeter an R11 oder R12, zeigt es einfach ganz brav die 0,6V an. Daher müsste man meinen, mit einem µC kann das doch nicht derart komplex werden, dass man daraus fast ne Doktorarbeit schreiben könnte? Möchte ich diese Spannung mittels µC messen, muss ich das ja irgendwie gegen GND tun. Und hätte somit einmal 24V, und einmal 23,4V anliegen... (+ Auf der negativen Seite eben negiert) Der differenzielle Eingang bezieht sich doch auch auf GND, richtig? Das heißt, hier würde Rauch aufsteigen. Von Maxim gibts zB. den MAX4070, der soll sowas wohl können. (ob er das sicher tut, konnte mir hier in der Firma auch niemand sagen...) Aber wie der anzuschalten ist in genau meinem Fall- keine Ahnung. Ausserdem ist er entschieden zu klein (Thin TQFN oder µMax). Ich könnte ihn zwar ohne weiteres hier in der Arbeit löten- aber auf WELCHE Lochrasterleiterplatte soll der passen? :)) Es muss doch ein Bauteil geben, welches in der Lage ist, 600mV über diese beiden Widerstände potenzialfrei zu messen und das Signal Prozessorgerecht umzuwursteln? Es müsste ja nichtmal potenzialfrei sein, wichtig ist, dass der µC eben nur max. 5V abbekommt. (mit Spannungsteilern wird das entschieden zu ungenau, leider...) Evtl. hast du eine Idee? :) Viele Grüsse und DANKE, Hubert
Hi nochmals! UFF, kaum poste ich hier "MAX4070", wird schon ein schöner Link draus, und ich bekomme den Tip, für diesen Zweck einen ACS712 zu benutzen. Misst dieser denn wirklich so wie im Datenblatt angezeigt absolut Potenzialfrei? Also kann ich ihn mit den Pins IP+ und IP- (1,2 u. 3,4) wirklich einfach parallel an meinen WS hängen? Die Fragen mögen für einen Profi etwas dümmlich erscheinen, aber ich bin nicht tief genug in der Materie drin, um andere Aussagen machen zu können :( Viele Grüsse, Hubert
Klar misst der ACS 712 potentialfrei, es handelt sich im einen Hallwandler. Prüfe mal mit einem OhmMeter den Rahmen vom Display mit jedem Pin der Anschlussleiste. Ich gehe davon aus, der Rahmen ist nicht potentialfrei sonden hat über die Befestigungslaschen eine Verbindung mit GND. Würde sogar Sinn machen weil der Rahmen dann als Abschirmung gelten darf. Sollte keine Verbindung mit GND bestehen, versuche mal eine zu machen und zu testen. Desweiteren, du verwendest den 1wire Befehl 1wverify. Was willst du damit erreichen? Gezielt den Baustein ansprechen? Wenn ja, ist das so nicht korrekt. Das muss mit dem ROM Befehl gemacht werden. Wie poste ich noch. Was spricht eigentlich dagegen die ellenlange Datenleitung zum Display radikal zu kürzen indem du das uC Board nahe zum Display versetzt? Also auf die Frontplatte. Die Messleitungen dürfen länger sein, abgeschirmt.
1wire code Sensor ansprechen, 1wreset 1wwrite &H55 'ROM Befehl 1wwrite B1(1), 8 'Bausteinnummer senden 1wwrite &HBE W(1) = 1wread(9) ......................................... Bausteinadresse vorher eingeben mit B1(1) = &H10 : B1(2) = &H2A : B1(3) = &HF6 usw. weitere Bausteine halt mit B2(), B3() usw Wenn du schon mit 1wire Bausteinen arbeitest bietet sich dieser Baustein vielleicht für dich an. DS2438. Schau mal ins Datenblatt. Ist halt nicht so einfach für den -24 V Zweig zu verwenden. Schaden aber nicht zu wissen dass es sowas gibt.
Hallo Hubert, man der ACS712 sieht doch schon ganz gut aus. Ich muß mich nur mal in das Datenblatt einlesen. Gruß Hackes
Wie parallel zu deinem WS hängen. Was ist WS, hab nicht nachgeschaut wo sowas in deiner Schaltung auftaucht. Der ASC712 ist ein Stromsensor. Das heißt, du musst ihn in die Leitung strommäßig reinhängen, deren Strom du messen willst. Strom/Spannungswandler. Macht aus mA bzw A eine Spannung am Ausgang.
Hallo Jungs! @ich da: ups, ich meinte eigentlich in Reihe zu meinem R11/R12... Logisch. Perfekt, dann werd ich die Burschen gleich mal ordern! :) Ich messe zwar nur 1.3A, denke aber, eine ausreichende Genauigkeit zu erreichen. HERRLICH! Das ist ja eine absolut perfekte Lösung! Für dein Listing: VIEEELEN DANK! Super, dass einem hier eine echt klasse Chance gegeben wird, zu lernen und zu basteln. :) Ich hatte das LCD bereits gegen sämtliche Pins gemessen, keines hatte Kontakt zur Alufront. Es ist alles etwas suspekt, aber wie schon weiter oben in einem meiner Beiträge geschrieben, werde ich das Display in der endgültigen Variante meiner Leiterplatte direkt an den µC per Stiftleiste koppeln, dann sollte ich Interferenzen zumindest einschränken können. @Hackes: Wenn du magst, les dich ein! Freut mich riesig! Viele Grüsse, Hubert
Hi nochmals! Nach meinen Berechnungen müsste ich bei einer AVCC von 5V bei 10bit AD-Genauigkeit ca. +/-5mV genau Spannungen messen können. Das heisst, ich messe meinen Strom von etwa 1.3A durch R11 und 1.3A durch R12 auf um die 27mA genau. (bei einer Ausgangsspannung des ACS712 von 185mV je 1A) Hinzu kommen noch die 1,5% Toleranz des ACS712 selbst, aber auch damit kann ich leben. Das reicht absolut aus. Die 5V an AVCC möchte ich ungern ändern, da ich für das VU-Meter auch eine halbwegs passende Auflösung haben will. Das klingt alles einfach zu gut. Langsam aber sicher nimmt das Projekt Formen an, Burschen! Grüsse, Hubert
Aufpassen, ins Datenblatt schauen. Bei 0 Ampere gibt das Ding die halbe Betriebsspannung aus, also 2,5 V. Weil das Ding ja auch Wechselströme messen kann. 0 Volt und 5 V sind dann jeweils die Stromgrenzwerte, je nach Typ. Im Datenblatt findest du auch Apl. Notes mit OP Schaltungen um je nach Bedarf anpassen zu können. Übrigens, auch mal ins Datenblatt vom Display schauen. Du findest Hinweise die unbenutzen 4 Eingänge sind weder an GND Potential noch an VCC Potential zu legen. Sie sind offen zu lassen, haben Pull-Up Widerstände intern, oder je nach Hersteller Pulldown R's. Ich verstehe noch nicht ganz was du mit dem Controller und LCD Display machen willst. Nur ne Kontrolle der Endstufentransis um je nach Bedarf Lüfter zu schalten damit die Thermik im Rahmen bleibt? Oder sonst noch was? Der Atmega 16 hat noch einige Pins übrig, Endstufenstrom misst du eh, folglich wäre zu überlegen ob du nicht noch per Balken_LED's eine Pegelanzeige, bzw Belastungsanzeige zaubern solltest. So hättest du auch eine optische Kontrolle bzw dynamische Anzeige. Übers LCD könntest du das auch per Text in Form von % Angaben machen. Nur wird das optisch nicht so viel her machen, weil die Zahlen zu schnell wechseln, jenachdem was an Musik usw verstärkt wird. Wie wär es mit sowas an optischem Schnickschnack?
Hallo ich da! Zum Display: Es spielt leider keine Rolle, ob ich Kondensatoren an die Versorgung oder die offenen Pins an Masse hänge, bzw. offen lasse. Immer hängt es sich auf, wenn man den Ringkern aus/einschaltet. Mal sehen, ob sich das bessert, wenn ich alles kompakter aufgebaut habe. Der Amp ist ein sog. Class A Aufbau. Deshalb liegen schon im "Leerlauf" 1.25A je Mosfet an. Ich überwache beide Mosfets (N und P) thermisch mittels DS18B20 (damit steuere ich den Lüfter) und parallel dazu ermittle ich den Strom, den sie im Betrieb bekommen. Dieser ändert sich schaltungsbedingt nämlich auch mit der Temperatur. Ich betreibe die beiden Amps jetzt seit etwa 2 Monaten, und musste feststellen, dass der Offset am Lautsprecherausgang noch nicht richtig eingestellt zu sein scheint. (dies wird mittels zweier Potis in der Schaltung gemacht, nachdem sie etwa 1-2 Stunden eingeschaltet war- ich habe aktuell bei warmem Amp bei einem 10mV, beim anderen -20mV) Es ist dazu zu sagen, dass ich bereits etwa 15 mal eingestellt und herumprobiert habe. Daraus ist dann irgendwie der Gedanke entstanden, sich die Werte einfach bequem auf einem Display während des Betriebs anzeigen zu lassen, um ggf. etwas nachzustellen und so irgendwann den richtigen Wert zu finden. Allgemein ist der Aufbau thermisch etwas problematischer, weil mein "unterer" Mosfet den darüberliegenden mit erwärmt. Je mehr Strom durch die Mosfets fließt, desto besser der Klang (in gewissem Rahmen natürlich). Daher ist eine Kontrolle ein guter Weg, sich einem "Optimalzustand" zu nähern. Es ist natürlich zum Großteil eine nette Spielerei. ;) Ein VU-Meter ist bereits programmiert, aber noch ohne Peak-Hold und leider viel zu träge, bzw. flackernd. (das wird die nächste Baustelle, aber wohl "nur" softwareseitig) Daher scheiden die LED's aus, auch wenn diese natürlich für so einen Zweck viel besser wären. Auch ein OLED Display gäbe es, aber nur als 16x2 Zeichen Anzeige. Die Temperaturen und Ströme lasse ich in einem Menü meines Programms natürlich auch grafisch als Balken darstellen, um von der Couch aus alles besser erkennen zu können- es ist aber interessant, dass du mir hier ähnliches vorschlägst, somit scheint die Idee nicht wirklich so schlecht zu sein! :) Viele Grüsse, Hubert
Hallo Hubert, ich war leider aus beruflichen Gründen in letzter Zeit etwas "verhindert". Bist Du schon was weiter gekommen? Gruß Dirk
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.