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
> 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.
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
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
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.
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