Bitte um Kontrolle - Terrariumschaltung

#2158687
Lesenswert?

Manuel Schneider schrieb:
> hallo
>
> habe mir für dne anfang glaube cih ziemlich viel vorgenommen. Ich wär
> euch dankbar wenn ihr mal über den Schaltplan schaut und mir sagt  ob da
> fehler drin sind.

1. http://www.mikrocontroller.net/articles/Netiquette es ist eine 
zimeliche Unverschämtheit und Anzeichen für geringe Wertschätzung der 
Forenarbeit wenn man sich derart wenig Mühe bei Rechtschreibung, etc. 
gibt.

2. Ich glaube mich erinnern zu können, das wir dir das schonmal gesagt 
haben (oder?!): Die Entprellung der Tasten macht man in der Software. 
Glaube uns das doch bitte.

3. 32kHz für den Quarz sind für einen Anfänger in meinen Augen zu wenig. 
Den Uhrenquarz als Taktquelle für einen Timer verwenden. Min. 4MHz als 
Primärtakt.

4. Warum I2C Pegelwandler? DOGM-Display und Vcc auf 3,3V absenken. 
http://www.mikrocontroller.net/articles/DOGMxxx_LCD_Routinen
Spart zusätzlich Spannungwandler + Pegelwandler
Gast #2158702
Lesenswert?

Wie soll man die Schaltung auf Richtigkeit durchsehen, wenn bei div. 
ICs/Baugruppen (I2C-Pegelwandler, LED-Beleuchtung, LCD-Display) keine 
Typenbezeichnung dransteht? Das Hühnerfutter bei den Köpfen hatten wir 
vor ein paar Tagen ja schon.
#2158979
Lesenswert?

Okay. Momäääänt, moment! Mir ist da grad, wenn ich mich nicht irre, ein 
riesen Fehler aufgefallen. Systemclock sollte eig 16Mhz sein. Aber 
offensichtlich habe ich das DS nicht genügend studiert. TOSC ist glaube 
ich das Stichwort. Aber mehr kann ich dazu im Moment auch nicht sagen. 
Ich muss selbst nachschaun. Wollt mich nur mal meldent damit ihr nicht 
komplett im Dunkeln wühlt^^.

Edit:
Auslöser war also der Abschnitt Low-frequency Crystal Oscillator im DS:
"To use a 32.768 kHz watch crystal as the clock *source* for *the* 
device, the Low-frequency Crystal Oscillator must be selected by 
setting the CKSEL fuses to “1001”. The crystal should be connected as 
shown in Figure 12."
Und in Figure 12 steht XTAL. Naja ich hab nicht daran geglaubt das 
tatsächlich jemand den Mega mit 32KHz laufen lassen will und dachte mir, 
dass der Mega den XTAL dann als asynchronen Zeitgeber nutzt. Mein 
Fehler.
#2159560
Lesenswert?

Jetz muss ich noch kurz was zu den vorigen posts sagen:
> 1. http://www.mikrocontroller.net/articles/Netiquette es ist eine
> zimeliche Unverschämtheit und Anzeichen für geringe Wertschätzung der
> Forenarbeit wenn man sich derart wenig Mühe bei Rechtschreibung, etc.
> gibt.

Hast Recht war nicht gerade höflich. Ich hatte es etwas eilig.

> 2. Ich glaube mich erinnern zu können, das wir dir das schonmal gesagt
> haben (oder?!): Die Entprellung der Tasten macht man in der Software.
> Glaube uns das doch bitte.

Ja aber wenn ich es doch schon in Hardware gelöst habe dann muss ich 
mich nicht mehr drum kümmern. Dazu muss ich noch sagen, dass, solange 
auf der Europlatine noch Platz ist, finde ich das die elegantere Lösung.

> 3. 32kHz für den Quarz sind für einen Anfänger in meinen Augen zu wenig.
> Den Uhrenquarz als Taktquelle für einen Timer verwenden. Min. 4MHz als
> Primärtakt.

Wie erwähnt war das mein Fehler. Natürlich sollte der Systemtakt nicht 
auf 32KHz laufen.

> 4. Warum I2C Pegelwandler? DOGM-Display und Vcc auf 3,3V absenken.
> http://www.mikrocontroller.net/articles/DOGMxxx_LCD_Routinen
> Spart zusätzlich Spannungwandler + Pegelwandler

Ja, aber 1. bin ich dessen nicht mächtig oder es kostet mich wieder ca 
20 - 30 Stunden mehr. Und 2. bekomme ich den Pegelwandler geschenkt - 
find ich ein nettes Feature - und auf den Spannungsregler kann ich ja 
nicht verzichten, weil die 5V brauche ich ja zumindest für das 
Backlight. DS:
http://www.yaoyu-lcm.com/english/admin/Software/20086171462569145.pdf . 
7,5V brauche weil vor dem TLC je 2 Leds in Reihe hängen. 3. mit 3,3V 
komme ihc nicht auf 16MHz



Also gut ich will eigentlich 16MHz nutzen, nur bisher dachte ich noch 
dass der Mega intern 16 Mhz macht. Allerdings habe ich jetz gelesen, 
dass der halt max 8MHz macht.

Kann ich da jetz jeden x-beliebigen Quarz nutzen? 
http://www.pollin.de/shop/t/ODE4OTA5OTk-/Bauelemente_Bauteile/Passive_Bauelemente/Quarze_Oszillatoren/Quarze_und_Quarzoszillatoren.html?ts=7 
z.B.? aber da ist kein Datenblatt dabei... Sind die Kondesatoren die ich 
brauche nicht vom Quarz abhängig? Ohne DS bin ich da ja jetz ziemlich 
angeschmiert...

Muss ich überhaupt einen Uhrenquarz verbauen? Ich habe in einem anderen 
Thread gelesen, dass man eine Uhr mit dem Systemtakt genauer hinbekommt. 
Dem kann ich aber nur bedingt glauben schenken, da der 16MHz-Quarz ca 
50ppm, (habe ich aus einem anderen DS) der Uhrenquarz aber nur 10ppm 
Fehlerrate hat und dazu noch mit einer niedrigeren frequenz läuft.
Angehängte Dateien:
Gast #2159585
Lesenswert?

Manuel Schneider schrieb:
> Muss ich überhaupt einen Uhrenquarz verbauen? Ich habe in einem anderen
> Thread gelesen, dass man eine Uhr mit dem Systemtakt genauer hinbekommt.
> Dem kann ich aber nur bedingt glauben schenken, da der 16MHz-Quarz ca
> 50ppm, (habe ich aus einem anderen DS) der Uhrenquarz aber nur 10ppm
> Fehlerrate hat und dazu noch mit einer niedrigeren frequenz läuft.

Nö, Du hast doch einen DCF-Empfänger vorgesehen. Der reicht zusammen mit 
dem quarzbasierten Systemtakt völlig aus.
http://www.mikrocontroller.net/articles/AVR_-_Die_genaue_Sekunde_/_RTC
Gast #2159597
Lesenswert?

Manuel Schneider schrieb:
> Ja aber wenn ich es doch schon in Hardware gelöst habe dann muss ich
> mich nicht mehr drum kümmern. Dazu muss ich noch sagen, dass, solange
> auf der Europlatine noch Platz ist, finde ich das die elegantere Lösung.

Wenn du unbedingt die Europlatine auffüllen mußt, hast du natürlich 
Recht. Andererseits gibt es die tollsten fertigen Entprellroutinen, so 
dass du dir die Zeit zum Auf-/Einlöten von dem ganzen Tüddelkram einfach 
sparen könntest.
#2160548
Lesenswert?

nabend. Beim layouten ist mir gerade aufgefallen das ich wohl die 
Displaybeleuchtung vergessen habe. I_max ist 480mA.

Meint ihr es ist okay wenn ich die Anode direkt an 5V anschließe und die 
Kathode über einen BC818 gegen Masse schalte?

Ich tu mich schwer Trasistoren zu verstehen also wär es nett wenn ich 
mir sagt ob folgendes richtig ist.

Dem DS http://www.pollin.de/shop/downloads/D130821D.PDF entnehme ich 
dass (zumindest für den BC817) bei einem Collector Current (zu 
schaltender Strom?) von 480 mA Current Gain (Verstärkungsfaktor?) noch 
ca 150x ist.
Also brauche ich ca 3 mA zum schalten, oder?
Nach URI sind das bei 5V 1,6kOhm an der Base. Richtig?

Hat ein Transistor auch so etwas wie einen Widerstand den ich bei 
berechnen des Schaltstromes berücksichtigen muss?
#2160562
Lesenswert?

Manuel Schneider schrieb:
> nabend. Beim layouten ist mir gerade aufgefallen das ich wohl die
> Displaybeleuchtung vergessen habe. I_max ist 480mA.
>
> Meint ihr es ist okay wenn ich die Anode direkt an 5V anschließe und die
> Kathode über einen BC818 gegen Masse schalte?

Wieviel Spannung benötigt das Display denn dabei? Wieviel bleibt dann am 
Transistor über? Welche Leistung bleibt am Transistor dabei hängen? 
Verträgt der das?


> Ich tu mich schwer Trasistoren zu verstehen also wär es nett wenn ich
> mir sagt ob folgendes richtig ist.
>
> Dem DS http://www.pollin.de/shop/downloads/D130821D.PDF entnehme ich
> dass (zumindest für den BC817) bei einem Collector Current (zu
> schaltender Strom?) von 480 mA Current Gain (Verstärkungsfaktor?) noch
> ca 150x ist.
> Also brauche ich ca 3 mA zum schalten, oder?

Ja, 3.2mA - solange der Transistor kalt bleibt.

> Nach URI sind das bei 5V 1,6kOhm an der Base. Richtig?

1,3kΩ


> Hat ein Transistor auch so etwas wie einen Widerstand den ich bei
> berechnen des Schaltstromes berücksichtigen muss?

Naja, wenn Du einen festen Strom definierst, ist der Widerstand recht 
hoch.
Spannungsquellen sind niederohmig.


Schalte zum Backlight lieber einen passenden Widerstand in Reihe, den 
Transistor dazu und diesen dann voll durchsteuern. Mit 1kΩ oder weniger 
an der Basis.


aaaaa schrieb:
> Wenn die Beleuchtung eine LED ist geht sie vermutlich kaputt, wenn du
> sie zwischen VCC, Transistor, Masse hängst

Nicht wenn man den Transistor als Stromquelle betreibt. Allerdings wird 
das, so wie er sich das dachte nichts.


Gruß

Jobst
Gast #2160566
Lesenswert?

Manuel Schneider schrieb:
> nabend. Beim layouten ist mir gerade aufgefallen das ich wohl die
> Displaybeleuchtung vergessen habe. I_max ist 480mA.
Sicher? Hört sich etwas viel an.

Manuel Schneider schrieb:
> Meint ihr es ist okay wenn ich die Anode direkt an 5V anschließe und die
> Kathode über einen BC818 gegen Masse schalte?
Auf gar keinen Fall. Verwende einen Vorwiderstand. Vorwärtsspannung 
(auch Durchlassspannung genannt) des Display aus dem Datenblatt 
ermitteln und dann diesen berechnen.

Und erarbeite dir bitte mal bitte die nötigen Grundlagen:
http://www.mikrocontroller.net/articles/LED
http://www.elektronik-kompendium.de/sites/bau/0201291.htm
http://www.elektronik-kompendium.de/sites/slt/0208031.htm
Gast #2160580
Lesenswert?

Manuel Schneider schrieb:
> nabend. Beim layouten ist mir gerade aufgefallen das ich wohl die
> Displaybeleuchtung vergessen habe. I_max ist 480mA.

Wo hast du diesen Wert für I_max her? Das ist doch keine Heizung. Im 
ganzen Thread taucht leider keine Angabe zum Display Typ auf. Die 
üblichen 2x16 LCDs haben LEDs als Hintergrundbeleuchtung mit typisch 20 
mA IF. Schon ein paar mA reichen normalerweise, d.h. das geht ohne 
Treiber. Die brauchen unbedingt einen Vorwiderstand, evtl. ist der 
bereits auf dem Display-Modul vorgesehen/vorhanden oder mit 0 Ohm 
bestückt. Datenblatt lesen und nachmessen! Das LCD kannst du 
wahrscheinlich auch im 4-Bit Modus betreiben und dann noch vier I/O-Pins 
am Prozessor sparen.
MfG
#2160980
Lesenswert?

Ist die Verschaltung allgemein okay so?

> Wieviel Spannung benötigt das Display denn dabei? Wieviel bleibt dann am
> Transistor über? Welche Leistung bleibt am Transistor dabei hängen?
> Verträgt der das?
Ich werde aus dem Datenblatt( 
http://www.yaoyu-lcm.com/english/admin/Software/20086171462569145.pdf ) 
nicht schlau.

Power supply for backlight 3.0 V
Forward Current 480mA
Forward Voltage 4.2V (typ.)

Was heißt das für mich?


>Nicht wenn man den Transistor als Stromquelle betreibt. Allerdings wird
>das, so wie er sich das dachte nichts.

Was ist falsch daran. Allgemein die Schaltung oder fehlen irgendwo 
Bauteile. Also soll der Transistor vor das LCD, oder wie? So dass ich 
die Stromzufuhr regle und nicht das abfließen?
#2161307
Lesenswert?

Werd auch mal meinen Senf dazu geben, da ich momentan an einem 
vergleichbaren Projekt arbeite.

TIPP 1:
16Fxxxx Pics sind zu klein !!! da reicht bei der komplexität die Stack 
nicht aus. das musste ich leider schmerzvoll lernen

TIPP 2:
Die Tasten sollte man per PortB-Change interrupt abfangen... Habe das 
vorher einfach per PortPin Status abfrage innerhalb der main-schleife 
gemacht, das bei steigendem Quellcode und Berechnungsaufwand dazu 
führte, das die taste bis zu 0,5s gedrückt werden musste, bis was 
passiert

TIPP 3:
wenn du komfort haben möchtest, dann kann man noch einen DCF77 empfänger 
anschließen, um die akt. Zeit empfangen und nutzen zu können. Ich hab 
das z.b. um licht und heizung temp & zeitgesteuert schalten zu lassen... 
in diesem fall solltest du mit dem gedanken spielen, einen 40pin'er zu 
nutzen, um freiraum bei der gestaltung zu haben

TIPP 4: Taktquelle von 20MHz ... je komplexer das ganze wird, desto 
langsamer wird das teil in der abarbeitung

..............................................
Mein Projekt sieht momentan so aus.
- DCD77 Empfänger für Uhtzeit
- 4 Tasten für Eingabe (schnelltasten /menuführung)
- 3 seperate Temp.Sensoren um an 3. verschied Orten messen zu können
- LCD Display (4x20) (grafik wäre mir lieber) um Temp und zeit anzeigen 
zu lassen
- 5 Ausgänge für Lampen/Thermometer => Über SolidState Relais
- LCD Backlight Steuerung (zeitabhängig)
- Configuration der Schaltzeiten und Schalt-Temp's per Software (Menu)
- Speicherung der Settings im Internen eeprom
- Datenlogger für Temps (ein sensor = Außentemp)
#2161361
Lesenswert?

> TIPP 1:
> 16Fxxxx Pics sind zu klein !!! da reicht bei der komplexität die Stack
> nicht aus. das musste ich leider schmerzvoll lernen

Hmm kenne die Daten nicht und kann deshalb nicht vergleichen. Ich hoffe 
der Mega32 reicht aus. Ich dachte anfangs er sei zu groß :-D

> TIPP 2:
> Die Tasten sollte man per PortB-Change interrupt abfangen... Habe das
> vorher einfach per PortPin Status abfrage innerhalb der main-schleife
> gemacht, das bei steigendem Quellcode und Berechnungsaufwand dazu
> führte, das die taste bis zu 0,5s gedrückt werden musste, bis was
> passiert

Ich habe gerade mal die Vektoren angeschaut bei AVR gibt es sowas 
scheinbar nicht. Aber ich habe dei Knöpfe extra auf die höherwertiuegn 
Bits gelegt damit ich nachher nur noch abfragen muss, ob der PORT > 32 
ist.

> TIPP 3:
> wenn du komfort haben möchtest, dann kann man noch einen DCF77 empfänger
> anschließen, um die akt. Zeit empfangen und nutzen zu können. Ich hab
> das z.b. um licht und heizung temp & zeitgesteuert schalten zu lassen...
> in diesem fall solltest du mit dem gedanken spielen, einen 40pin'er zu
> nutzen, um freiraum bei der gestaltung zu haben

DCF ist geplant:-D.

> TIPP 4: Taktquelle von 20MHz ... je komplexer das ganze wird, desto
> langsamer wird das teil in der abarbeitung

ich kann leider 16MHz max. Aber ich hoffe es reicht. Ich habe auch nicht 
all zu viel rechenintensiven Code. Die Sensoren können ohnehin maximal 2 
Mal in der Sekund messen wegen der Eigenerhitzung.

> Mein Projekt sieht momentan so aus.
> - DCD77 Empfänger für Uhtzeit
> - 4 Tasten für Eingabe (schnelltasten /menuführung)
> - 3 seperate Temp.Sensoren um an 3. verschied Orten messen zu können
> - LCD Display (4x20) (grafik wäre mir lieber) um Temp und zeit anzeigen
> zu lassen
> - 5 Ausgänge für Lampen/Thermometer => Über SolidState Relais
> - LCD Backlight Steuerung (zeitabhängig)
> - Configuration der Schaltzeiten und Schalt-Temp's per Software (Menu)
> - Speicherung der Settings im Internen eeprom
> - Datenlogger für Temps (ein sensor = Außentemp)

Witzig, genau meine Peripherie! Aber cih muss ganz erlich sagen ich kann 
mir nicht vorstellen, dass so eine Messstation wirklich so viel 
Ressourcen frisst. Schau mal ob sich dein Code optimieren lässt.
Auf die schnelle fällt mir da I²C-Bus ein. Die Schnipsel im I-Net kannst 
du vergessen. Die verbringen 99% mit Busy-Wating. Ich habe mir eine 
eigene Interrupt gesteuerte I²C Routine geschrieben und bin pro Messung 
von 66ms (Ziemlich genau das was der SHT25 für die Messung braucht) auf 
1 ms effektiv genutzte Zeit, die ich in der Messroutine verbringe, 
gekommen.

Zeitrauber und auch noch Deadlockfalle ist halt:
1
while(!TWINT){
2
    ;
3
}
Kein Spaß genau das stand in jedem TWI/I²C-Schnipsel den ich fand. Für 
mich der Coding-Fauxpas schlechthin.

grüße

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren