Forum: Mikrocontroller und Digitale Elektronik AVR-Anfängerprojekt (LED-Leiste, DCF77, SHARP-IR)


von Yunus (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Leute,

bin an meinem ersten wirklichen AVR-Projekt dran und würde euch gerne 
beten mal über die Schaltung zu schauen.

Plan hänge ich an.

Nun zu meinem vorhaben, ich möchte einen 1,75cm breiten PAX 
Kleiderschrank mit LED-Leisten beleuchten. Die Leisten bestehen aus 
Winkelprofilen mit eingeklebten LED-Strips (3x 1m & 4x 0,75m = 
Leistungsaufnahme von ca. 30W).

Aktuell reicht es mir, wenn die LEDs mit der Zimmerbeleuchtung 
(230V-Sense) angehen würden. Die Schaltung hab ich von hier übernommen: 
http://www.mikrocontroller.net/articles/230V

In Zukunft soll dann die Uhrzeit berücksichtigt werden (DCF77 Modul von 
ELV), außerdem schwebt mir vor, den Schrank als Sonnenaufgangsimulator 
zu nutzen in dem die LEDs per PWM angesteuert werden (Wecker).

Zusätzlich soll ein Sharp-IR Distanzmesser (GP2Y0A02YK0F) als 
Näherungssensor dienen. An einer oberen Ecke angebracht, diagonal über 
die Frontansicht des Schrankes "suchend" sollte es möglich sein, 
Änderungen der Abstände (=Beweungen) zu detektieren und so die 
Beleuchtung für eine gewisse Dauer einzuschalten.

Da es mein erstes Projekt ist, wäre ich euch verbunden, wenn ihr mir mit 
konstruktiver Kritik beiseite stehen würdet.

Vielen Dank
Yunus

von Jonas G. (jstjst)


Lesenswert?

Hallo,

bitte schau dir als erstes das AVR-Tutorial an.

Der Quarz wird so nicht anschwingen: 
https://www.mikrocontroller.net/articles/AVR-Tutorial:_Equipment#Quarz

Dann solltest du den Spannungsregler von dem Rest trennen und den Ein- 
und Ausgang nur mit +12v, +5v und GND verbinden. Ungefähr wie hier: 
https://www.mikrocontroller.net/articles/AVR-Tutorial:_Equipment#Spannungsversorgung

Was für ein Spannungsregler ist das? Ich gehe mal von einem 7805 aus. 
Diesen solltest du auch so benennen.
C2 sollte meiner Meinung nach etwas größer sein. Ich würde 10uF nehmen.

Für einen Elko gibt es ein extra Symbol: rcl/C_POL_EU
Dann solltest du das Ck und Ek löschen.

Zudem würde ich je nach Netzteil am Eingang vom Spannungsregler auch 
noch einen Kondensator nehmen, da in manchen Netzteilen dieser arg knapp 
ist.

Ich würde von Reset nach GND noch einen Kondensator (47nF) legen.

Dann solltest du noch eine ISP Buchse 
einbauen:https://www.mikrocontroller.net/articles/AVR_In_System_Programmer#ISP

Mach das erst mal, dann such ich noch ein bisschen.

Jonas

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Wieder einmal: AREF sollte nicht mit VCC verbunden werden, sondern 
lediglich mit einem z.B. 100nF gegen GND. Erstens verbaust du dir 
dauerhaft die Möglichkeit, eine andere Referenzspannung mit externer 
Siebung zu wählen und zweitens kann man VCC sowieso als Referenz 
auswählen.
Wenn du den ADC auch benutzen willst, ist es eine gute Idee, AVCC über 
ein LC Glied in den MC einzuspeisen. 10µh-330µH und ein 100nF gegen 
Masse haben hier noch nie geschadet.
C3 muss so dicht wie möglich an den MC, am besten direkt in den Sockel.
Der 230V Detektor ist am ICP - aber warum schaltest du da einen Elko 
parallel zum OK? Damit verbaust du dir die Chance, echte Messungen zu 
machen und den MC per 50Hz zu retriggern.
Du könntest auf dieser Basis auch gleich einen 50Hz Ticker einbauen.

Die Erfahrung zeigt auch, das es sinnvoll ist, die Speisung für ein 
DCF77 Modul nochmal extra zu filtern. Also auch hier ein LC Glied rein, 
damit das Modul nicht vom MC gestört wird.
Portpins direkt auf Anschlüsse zu leiten, ist auch nicht so eine gute 
Idee. Lege in die Leitung der DCF77 Daten ruhig noch einen mittleren 
Widerstand a là 330-2,2k.

von Minimalist (Gast)


Lesenswert?

30W LED Kleiderschrank? Deine Motten werden Schweißerbrillen tragen. 
Oder sollen die außen an den Schrank?

Ich hab das bei mir gelöst, in dem ich billige RGB-strips außen rum 
geklebt habe, die mit IR Fernbedienung steuerbar sind. Gbts ja 
mittlerweile für kleines Geld bei jedem Discounter. Das aufdimmen 
morgends erledigt dann ein Tiny85 den ich in meinen Funkwecker 
reingepfriemelt hab mit IRMP.

von Yunus (Gast)


Lesenswert?

Hallo Jonas,

vielen Dank für die Ratschläge.

Das mit dem Quarz ist peinlich, so ein Fehler sollte mir nicht 
passieren. Habe nun 22p Cs genommen, da CL mit 18p angegeben ist -> 
2*18p - (~4p + 10p).

Spannungsregler sollte vom Anschluss her richtig gewesen sein? Habe es 
dennoch optisch an die Verschaltung vom Tutorial näher gebracht. Ferner 
habe ich einen 330nF durch 100nF ersetzt, einen zusätzlichen 10µ Elko 
angehangen und den 12V input mit 330nF geglättet. Mir kommt es fast so 
vor, als wäre ein Elko um den Spannungsregler rum unnötig, ist es der am 
Input oder Output? Datenblatt und Tutorial sind sich hier uneinig. Ob 
ich nun den 78S05 oder 7805 nehme sollte ja keinen großen unterschied 
machen? (78S05 hab ich gerade griffbereit, nicht wegen der Leistung).

Kondensator an Reset ist ebenfalls eingefügt.

ISP Buchse: DAS hätte mich geärgert wenn ich fertig wäre :D

In dem Tut ist mir aufgefallen, dass ich AVCC, AREF, VCC etc mit 
Kondensatoren bestücken sollte -> ist nun geschehen.

Besten Dank nochmal.

Freue mich auf weitere Ratschläge

von Yunus (Gast)


Angehängte Dateien:

Lesenswert?

-- Bild vergessen

von Jonas G. (jstjst)


Lesenswert?

Lade noch mal einen aktuellen Schaltplan hoch.

von Yunus (Gast)


Lesenswert?

Matthias S. schrieb:
> Wieder einmal: AREF sollte nicht mit VCC verbunden werden, sondern
> lediglich mit einem z.B. 100nF gegen GND. Erstens verbaust du dir
> dauerhaft die Möglichkeit, eine andere Referenzspannung mit externer
> Siebung zu wählen und zweitens kann man VCC sowieso als Referenz
> auswählen.

Wusste ich nicht, hab es im AVR-Tutorial nun entdeckt. Wenn man soetwas 
dann als erstes mal selbst macht gibt es doch sehr viel was man auf ein 
mal beachten muss. Danke für den Ratschlag

> Wenn du den ADC auch benutzen willst, ist es eine gute Idee, AVCC über
> ein LC Glied in den MC einzuspeisen. 10µh-330µH und ein 100nF gegen
> Masse haben hier noch nie geschadet.

Mir fallen mittelfristig Ideen ein, die ADC erfordern würden. Werde ich 
mit aufnehmen, danke.

> C3 muss so dicht wie möglich an den MC, am besten direkt in den Sockel.

Gut zu wissen, danke!

> Der 230V Detektor ist am ICP - aber warum schaltest du da einen Elko
> parallel zum OK? Damit verbaust du dir die Chance, echte Messungen zu
> machen und den MC per 50Hz zu retriggern.
> Du könntest auf dieser Basis auch gleich einen 50Hz Ticker einbauen.

Die Schaltung ist 1zu1 übernommen, Link ist angegeben, dort steht auch, 
dass sie für die Nutzung als Trigger o.ä. ungeeignet ist. Messungen/50Hz 
Trigger ist weder im aktuellen Projektstand, noch in Zukunft für DIESES 
Projekt vorgesehen. Den ICP nehme ich, weil der gerade da ist :)

> Die Erfahrung zeigt auch, das es sinnvoll ist, die Speisung für ein
> DCF77 Modul nochmal extra zu filtern. Also auch hier ein LC Glied rein,
> damit das Modul nicht vom MC gestört wird.

Danke werde ich auch mit aufnehmen.

> Portpins direkt auf Anschlüsse zu leiten, ist auch nicht so eine gute
> Idee. Lege in die Leitung der DCF77 Daten ruhig noch einen mittleren
> Widerstand a là 330-2,2k.

Alles klar, wird gemacht!

Danke!

@Minimalist: Motten habe ich bei mir noch keine entdeckt, und wenn doch 
ist verschmorren doch ne gute Lösung? :D Die LED-Stripes die ich habe 
sind mit 24W bei 5m angegeben 24W/5m * 6m <= 30W

von holger (Gast)


Lesenswert?

Ohne Debugmöglichkeiten wird das programmieren ein Krampf werden.
Mach dir da noch einen UART-, Displayanschluss oder ein paar LED mit 
dran.

von Joachim B. (jar)


Lesenswert?

Yunus schrieb:
> Plan hänge ich an.

wozu, werbaut denn noch Module selber?
was ist dein ziel, selber Layout machen und Platinen erstellen, dann nur 
zu, sonst

Arduino atmega328p oder größer nach Wunsch

IRMP als IR Lib
LDR als Fotosensor am ADC
nach Belieben
eine RTC DS3231 hat Alarmregister für den CPU Wecker, die CPU kann 
pennen (von mir aus auch DS1307 und die CPU muss alles selber machen)
einen Tempsensor DS18B20

Yunus schrieb:
> eingeklebten LED-Strips

oder RGB LEDs WS2812B mit fastLED LIB

Yunus schrieb:
> In Zukunft soll dann die Uhrzeit berücksichtigt werden (DCF77 Modul von
> ELV)

DCF77 SW von PeDa

Yunus schrieb:
> Zusätzlich soll ein Sharp-IR Distanzmesser
fertiges US Modul für Arduino

besser gleich zum Arduino mighty atmega 1284p wechseln

von Frank E. (Firma: Q3) (qualidat)


Lesenswert?

Abgesehen von den technischen Einzelheiten, scheint mir das als 
"Anfänger-Projekt" maßlos überzogen. Empfohlenes Vorgehen:

Jede Funktion (Hardware und Software!) EINZELN entwickeln und testen. 
Beim Softwaredesign darauf achten, das Ergebnis nach abgeschlossener 
Entwicklung für jedes Teilproblem in Funktionsbibliotheken bzw. Libs 
oder Klassen zu verpacken, strenge Kapselung und Benennungs-Regeln für 
Variablen und Konstanten einführen.

Wenn jede Teilfunktion für sich zuverlässig läuft, damit beginnen, 
planvoll das Endresultat zusammen zu bauen. Dann muss immer noch jede 
Einzelfunktion richtig funktionieren. ERST DANN legt man die 
Verbindungslogik und Abhängigkeiten an.

Damit wird auch ein (Gesamt-) "Schaltplan" fast überflüssig, denn jede 
Funktionsgruppe kann an (beinahe) beliebige Pins angeschlossen werden, 
und die sind ja per Software (Objekt- bzw.Klassen-Initialisierung) 
definierbar ...

Um das mit einem groben Beispiel zu untermauern: Du schreibst Funktionen 
wie "GetAbstand", "GetZeit", "LichtAn" usw. Und NICHT "... wenn Bit3 vom 
Anstandssensor und Bit 1 der Uhrzeit, aber nicht Bit0 des Türkontaktes, 
dann setze Bit8 der Beleuchtung ... usw." DAS wird nie was ...

: Bearbeitet durch User
von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Frank E. schrieb:
> Abgesehen von den technischen Einzelheiten, scheint mir das als
> "Anfänger-Projekt" maßlos überzogen.

Der TE hat doch ganz klar gesagt, das es schrittweise passieren soll:

Yunus schrieb:
> Aktuell reicht es mir, wenn die LEDs mit der Zimmerbeleuchtung
> (230V-Sense) angehen würden.
Dann:
Yunus schrieb:
> n Zukunft soll dann die Uhrzeit berücksichtigt werden

und später

Yunus schrieb:
> Zusätzlich soll ein Sharp-IR Distanzmesser

Ich versteh gar nicht, warum den Leuten das Basteln mies gemacht wird. 
Ihr müsst es ja nicht machen, aber wenn jemand einen Mega32 dafür 
benutzen will, warum nicht? Jeder nach seiner Facon...

von Joachim B. (jar)


Lesenswert?

Matthias S. schrieb:
> Ich versteh gar nicht, warum den Leuten das Basteln mies gemacht wird.

hat wer getan?

Miesmacherei ist das doch nicht, es kommt halt auf die Ziele an und da 
kann man doch abwägen was besser ist, was zum Ziel passt.

Dem einen eine Platine entwickeln, dem anderen ein Projekt mit 
Fertigteilen zu beenden.

von Yunus (Gast)


Angehängte Dateien:

Lesenswert?

N'abend

anbei nochmal ein Update, ich habe versucht alle Ratschläge zu 
beherzigen, das Layout etwas übersichtlicher zu gestalten (Linke Seite 
vom µC muss noch gemacht werden) und auch versucht, wie von Frank 
empfohlen, das Layout etwas "Modularer zu gestalten.

holger schrieb:
> Ohne Debugmöglichkeiten wird das programmieren ein Krampf werden.
> Mach dir da noch einen UART-, Displayanschluss oder ein paar LED mit
> dran.

UART ist nun umgesetzt. Wollte ich mittelfristig sowieso machen, dein 
Post hat mich aber wachgerüttelt bzgl. MAX232 integration (hätte ich 
glatt verpennt :D)

Joachim B. schrieb:
> Yunus schrieb:
>> Plan hänge ich an.
>
> wozu, werbaut denn noch Module selber?
> was ist dein ziel, selber Layout machen und Platinen erstellen, dann nur
> zu, sonst

Im großen und ganzen JA, trotzdem bediene ich mich natürlich gerne 
fertiger Libs, werde mir die DCF77 Lib mal anschauen, obwohl ich schon 
angefangen habe eine Lösung zu codieren. Vielen Dank!

Frank E. schrieb:
> Abgesehen von den technischen Einzelheiten, scheint mir das als
> "Anfänger-Projekt" maßlos überzogen. Empfohlenes Vorgehen:

Ja stimmt wahrscheinlich. Ich muss dazu erwähnen, dass ich mich schon 
seit Jahren mit der Thematik beschäftige und das nicht nur im Studium. 
Es ist nur das erste wirkliche Projekt mit definiertem Anfang und Ende, 
wo am Ende auch etwas mit einem Nutzen entstehen soll - losgelöst von 
den Evalboards.
Ich versuche ohnehin alles möglichst Modular zu gestalten, auch zwecks 
wiederverwendbarkeit für zukünftige Projekte. Danke dir trotzdem für 
deine Empfehlung!

Matthias S. schrieb:
> Ich versteh gar nicht, warum den Leuten das Basteln mies gemacht wird.
> Ihr müsst es ja nicht machen, aber wenn jemand einen Mega32 dafür
> benutzen will, warum nicht? Jeder nach seiner Facon...

Hallo Matthias, ich lese auch schon lange hier im Forum mit eigentlich 
verläuft der Thread doch noch verhätlnismäßig harmlos :), den 32er nehme 
ich übrigens nur, weil ich ein Evalboard dafür habe und auch bereits 
Erfahrungen mit dem Controller. Das er für diese Aufgaben ziemlich 
oversize ist, ist mir bewusst.

Ich danke allen nochmals für die Ratschläge! Ich denke so langsam habe 
ich einen Stand wo ich die Teile bestellen und das Board mal aufbauen 
kann.

Schönen Abend noch
Yunus

von Joachim B. (jar)


Lesenswert?

Yunus schrieb:
> wachgerüttelt bzgl. MAX232 integration

nimm lieber einen max 3232 moderner kleinere Kondis und läuft alternativ 
auch mit 3,3V

Yunus schrieb:
> den 32er nehme
> ich übrigens nur, weil ich ein Evalboard dafür habe und auch bereits
> Erfahrungen mit dem Controller.

dann wird dir der m1284p mehr Spass machen, pinkompatibel zum m32 und 
128k flash und 16k RAM

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Noch ein Tipp: Schliesse den MOSFet an einen der Hardware PWM Ausgänge 
an, z.B. OC0, OC1A/B oder OC2. Dann hast du wahlweise auch 'Zero-Effort' 
PWM mit einem der Timer.

von Joachim B. (jar)


Lesenswert?

Matthias S. schrieb:
> Noch ein Tipp: Schliesse den MOSFet an einen der Hardware PWM Ausgänge

aber nicht den serien R vergessen der den Strom aus 12V zum Port 
begrenzt falls der MOSFET mal durchschiesst.

von Yunus (Gast)


Lesenswert?

Hallo Leute,

habe die Hardware nun soweit verdrahtet wie im Bild zu sehen.

Offen sind noch:
-MAX232 Baustein nicht eingesetzt (Buchse und Elkos sind schon 
verdrahtet)
-IR-Sensor noch komplett offen
-230V ”Sensierungsmodul” komplett nicht vorhanden


Leider, wer hätte das gedacht, funktioniert es nicht wie geplant.

Ich vorübergehend ein Displaymodul an PORTC angeschlossen um erstes 
debugging zu betreiben- ich kriege auf dem Display nichts angezeigt (auf 
dem RN-Controllerboard klappt es, also sollte es kein SW Fehler sein) 
Verdrahtung vom Display zum Controller hab ich mehrfach gecheckt sollte 
auch i.O. sein.

Komisch ist, ich kann den Controller auf MEINER Platine programmieren 
(kleines Programm geschrieben, auf meiner Platine geflasht und MEGA32 in 
das dev-board (rn-control) gesteckt -> es tut was es soll.

Hat einer ne Idee wie ich den Fehler ausfindig machen könnte? Könnte es 
am Quarz liegen, auch wenn er sich flashen lässt? Was schlagt ihr vor um 
den Fehler weiter einzugrenzen?

Ich werde mal versuchen eine LED zum blinken zu bringen, solange wie ich 
die LED besorge wollte ich hier auch nochmal um Rat fragen.

LG
Yunus

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Yunus schrieb:
>
> Ich vorübergehend ein Displaymodul an PORTC angeschlossen um erstes

PORTC ist auch der JTAG Port. Wenn du den für normales I/O benutzen 
willst, solltest du die JTAG Funktion über die Fuse abschalten.

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
Noch kein Account? Hier anmelden.