Forum: Mikrocontroller und Digitale Elektronik Anfängerfragen zu Mikrochips


von Herbert G. (feuerfuchs)


Lesenswert?

Hi,

ich bin Anfänger was Mikrochips angeht und möchte eine RGB-LED 
Zimmerbeleuchtung bauen.
An diese soll ein evt. ein LCD Display, auf jeden Fall aber ein Schalter 
zum auswählen der Programme. Habe u.a. folgenden Thread gelsesen: 
http://www.ledstyles.de/ftopic7948.html?s=d213afaab0b26cee6119e997415fca777285ec63 
, das gefällt mir eigentlich recht gut mit dem LCD und dem Schalter. 
Dort wurde ein ATmega8 verwendet.
Programmiererfahrung habe ich u.a. in C++ und PHP, weshalb ich 
wahrscheinlich bei Atmel C verwenden werde.
Habe bisher nur eine LED Lampe mit Netzteil gebaut.

Habe mich schon ein bisschen eingelesen, habe aber zunächst Fragen:

1)Welcher Mikrochip eignet sich für so ein Projekt? Habe mich bisher ein 
bisschen in die Atmel AVR eingelesen.

2) Gibt es für bestimmte Mikrochips einen Sockel, damit man einen 
größeren Lötpadabstand hat?

3) Wie mache ich das, wenn ich den Chip in die Schaltung einlöte, dann 
aber einen Softwarefehler habe oder die Software erweitern will?
Gibt es dazu auch Programmierboards mit Kabeln?

4) Wie sieht das mit der Schaltung und den LEDs aus? Habe ich es richtig 
verstanden, dass pro "Farbleitung für die LEDs" ein Pin benötigt wird 
und ein Transistor, der mit dem NT verbunden ist und den Strom 
verstärkt?

Im Momment fallen mir keine weiteren Fragen ein, Danke für eure Hilfe!

von Severino R. (severino)


Lesenswert?

K. P. wrote:
> Hi,
>
> ich bin Anfänger was Mikrochips angeht und möchte eine RGB-LED
> Zimmerbeleuchtung bauen.

Hast Du denn Erfahrung in Elektronik? Ohmsches Gesetz, Löten, diskrete 
und integrierte Bauteile?

> An diese soll ein evt. ein LCD Display, auf jeden Fall aber ein Schalter
> zum auswählen der Programme. Habe u.a. folgenden Thread gelsesen:
> 
http://www.ledstyles.de/ftopic7948.html?s=d213afaab0b26cee6119e997415fca777285ec63
> , das gefällt mir eigentlich recht gut mit dem LCD und dem Schalter.

Keine Ahnung, was dort gemacht wird.

> Programmiererfahrung habe ich u.a. in C++ und PHP, weshalb ich
> wahrscheinlich bei Atmel C verwenden werde.

Scheint mir in dem Fall sinnvoller als Assembler.


> 1)Welcher Mikrochip eignet sich für so ein Projekt? Habe mich bisher ein
> bisschen in die Atmel AVR eingelesen.

Ziemlich unkritisch. Mindestens 11 digitale I/O Pins sind nötig, besser 
sind rund 20 (inkl. LCD Ansteuerung).


> 2) Gibt es für bestimmte Mikrochips einen Sockel, damit man einen
> größeren Lötpadabstand hat?

Grösser als was?
Such einen im DIL-Gehäuse aus, dann geht das schon mit den Lötpads.

> 3) Wie mache ich das, wenn ich den Chip in die Schaltung einlöte, dann
> aber einen Softwarefehler habe oder die Software erweitern will?
> Gibt es dazu auch Programmierboards mit Kabeln?

Ja. Lass am besten die paar Pins auf dem AVR frei, damit Du jederzeit 
neu Programmieren kannst.

> 4) Wie sieht das mit der Schaltung und den LEDs aus? Habe ich es richtig
> verstanden, dass pro "Farbleitung für die LEDs" ein Pin benötigt wird
> und ein Transistor, der mit dem NT verbunden ist und den Strom
> verstärkt?

Ja

>
> Im Momment fallen mir keine weiteren Fragen ein, Danke für eure Hilfe!

Zum Glück ;-) (kommt schon noch). Bitte.

von Paul (Gast)


Lesenswert?

>http://www.ledstyles.de/ftopic7948.html?s=d213afaa...
>das gefällt mir eigentlich recht gut mit dem LCD und dem Schalter.
>Dort wurde ein ATmega8 verwendet.

Das stimmt so nicht ganz. Jeder LED-Stripe hat einen eigenen Atmega8, 
der über UART von einer Steuereinheit mit einem Atmega64 angesteuert 
wird.

> 4) Wie sieht das mit der Schaltung und den LEDs aus? Habe ich es richtig
> verstanden, dass pro "Farbleitung für die LEDs" ein Pin benötigt wird
> und ein Transistor, der mit dem NT verbunden ist und den Strom
> verstärkt?

Nicht nur irgendeinen Pin, am Besten einen, der eine Hardware PWM hat. 
Statt eines Transistors wäre es noch besser, einen PWM-fähigen 
Konstantstromregler zu verwenden. Von Texas Instruments gibt es für 
solche Applikationen mit 20mA-LEDs ganz nette Sachen mit glaube ich bis 
zu 16 Kanälen.

von Herbert G. (feuerfuchs)


Lesenswert?

Erfahrung in elektronik habe ich, allerdings oberflächlich. Also 
Ohmsches Gesetz und so ist mir klar.
Mein einziges Projekt war bisher 4 Superflux LEDs an einer KSQ mit einem 
Netzeil.

Also der ATmega8 hat 28 Pins?
Stimmt das so:?
- 2 Pins für die Stromversorgung der Mikrocontrollers
- 3 Pins für die LEDs

wie viele braucht ein LCD, wieviele ein Schalter?
(damit ihr wisst welche Art ich meine):
http://www.ledstyles.de/index.php?page=Attachment&attachmentID=7648&h=bedd44fe14bc7119da32d3e733839f18e63eecdc

EDIT: Wie oft lässt sich der ATmega 8 in etwa beschreiben? Habe etwas 
von 1000 mal gelesen.

von Severino R. (severino)


Lesenswert?

K. P. wrote:
> Erfahrung in elektronik habe ich, allerdings oberflächlich. Also
> Ohmsches Gesetz und so ist mir klar.
> Mein einziges Projekt war bisher 4 Superflux LEDs an einer KSQ mit einem
> Netzeil.
>
> Also der ATmega8 hat 28 Pins?
> Stimmt das so:?
> - 2 Pins für die Stromversorgung der Mikrocontrollers
> - 3 Pins für die LEDs

Dann noch der Oszillator. Am Besten schaust Du Dir eine 
Musterbeschaltung an. Es gibt sicher hier im Forum welche, oder 
Applicaton Notes vom Hersteller.

>
> wie viele braucht ein LCD, wieviele ein Schalter?
> (damit ihr wisst welche Art ich meine):
> 
http://www.ledstyles.de/index.php?page=Attachment&attachmentID=7648&h=bedd44fe14bc7119da32d3e733839f18e63eecdc

LCD: Je nach Schnittstelle:
11 (Parallel, 8 Bit)
 7 (Parallel, 4 Bit)
oder weniger (SPI, I2C, Asynchron seriell)
Am weitesten Verbreitet sind die parallelen, die man als 4 Bit oder 8 
Bit betreiben kann.

Anzahl Pins für Schalter:
Ist die Frage ernst gemeint?
Hängt vom Schalter ab: Ein/Aus, Umschalter, Drehgeber, ...

> Wie oft lässt sich der ATmega 8 in etwa beschreiben? Habe etwas
> von 1000 mal gelesen.

Steht im Datenblatt. Das solltest Du schon mal studieren.
Denke jedenfalls schon öfter als 1000x.

von Herbert G. (feuerfuchs)


Lesenswert?

Paul wrote:
>>http://www.ledstyles.de/ftopic7948.html?s=d213afaa...
>>das gefällt mir eigentlich recht gut mit dem LCD und dem Schalter.
>>Dort wurde ein ATmega8 verwendet.
>
> Das stimmt so nicht ganz. Jeder LED-Stripe hat einen eigenen Atmega8,
> der über UART von einer Steuereinheit mit einem Atmega64 angesteuert
> wird.
>
>> 4) Wie sieht das mit der Schaltung und den LEDs aus? Habe ich es richtig
>> verstanden, dass pro "Farbleitung für die LEDs" ein Pin benötigt wird
>> und ein Transistor, der mit dem NT verbunden ist und den Strom
>> verstärkt?
>
> Nicht nur irgendeinen Pin, am Besten einen, der eine Hardware PWM hat.
> Statt eines Transistors wäre es noch besser, einen PWM-fähigen
> Konstantstromregler zu verwenden. Von Texas Instruments gibt es für
> solche Applikationen mit 20mA-LEDs ganz nette Sachen mit glaube ich bis
> zu 16 Kanälen.

Zu den Mikrochips:
Du hast Recht, hier sieht man auch ein Video der Schaltung:
http://onlineflvplayer.com/?video=http://www.terjung.net/test3.flv
Bei ca. 14 übrigen Sekunden "wandert" das Licht, also es werden nur 
bestimmte Stripes angesteuert.(Man sieht es auch schon am Anfang)

Das ist jedoch allein vom Aufwand für den Anfang zu kompliziert, Ich 
will also einen zentralen Chip und nicht auf jedem Stripe einen.

Zur Antwort auf Frage 4:

Das verstehe ich leider nicht ganz. Hier habe ich mal ein Bild mit den 
Anschlüssen des Chips:
http://www.roboternetz.de/wissen/index.php/Bild:Pinbelegungmega8.gif

Wäre nett, wenn jemand die Nummern nennen könnte.


Severino R. wrote:
> Anzahl Pins für Schalter:
> Ist die Frage ernst gemeint?
> Hängt vom Schalter ab: Ein/Aus, Umschalter, Drehgeber, ...


Ich will eben so einen Schalter wie auf dem Bild, ein Ein/Aus ist es 
nicht, ich würde es Umschalter nennen.
Er soll also einen Befehl zum Chip senden können, das nachste Programm 
auszuwählen oder zurück zum letzen. Ist auch nicht schlimm, wenns nur 
eins von den beiden ist, aber 2 Befehle wären schon besser.
Das müssten ja dann 3 Kanäle sein, einer für die Stromversorgung und 
dann 2 für die verschiedenen Rückleitungen, oder?

von CogitoErgoSum (Gast)


Lesenswert?

> Wie oft lässt sich der ATmega 8 in etwa beschreiben? Habe etwas
> von 1000 mal gelesen.

Nonvolatile Program and Data Memories
– 8K Bytes of In-System Self-Programmable Flash
Endurance: 10,000 Write/Erase Cycles

von ... (Gast)


Lesenswert?

Hi,

Dein "Schalter" ist ein Drehgeber/Drehencoder. Wenn Du nach diesen 
beiden Bezeichnungen hier im Forum suchst, findest Du jede Menge Infos. 
Der braucht 2 bzw. 3 Pins, je nachdem ob er einen zusätzlichen Taster 
enthält oder nicht.

CU

von Herbert G. (feuerfuchs)


Lesenswert?

Ok, danke schon mal für eure Hilfe.

Welche Transistoren bräuchte man, zum Verstärken des Signals?

von Aike T. (biertrinker)


Lesenswert?

Hi,

ich bin der "Erbauer" dieser Konstruktion. Ich habe diesen Thread gerade 
erst entdeckt und ihn nur kurz überflogen. Aber soweit kann ich den 
Antworten eigentlich nur zustimmen. Vor allem aber auch, das das ne 
nette Aufgabe wird, wenn du sowas als "Erstlingswerk" umsetzen willst. 
Ok, mein Ich würde erstmal versuchen eine LED per PWM zu dimmen, mal mit 
dem Hardware-PWM und auch mal ruhig in Software. Ich arbeite übrigens 
dabei mit Software-PWM.

Dann könntest du mal ein Display probieren. Da gibt es ja ganz gute Libs 
für. Allerdings liegt da ja eher der Trick bei einem brauchbaren 
Menu-System als bei der Ausgabe von ein paar Zahlen auf dem Display.
Der Drehencoder war übrigens nicht so einfach zu bedingen. Ich habe 
mehrere getestet die alle gelegentlich nicht ganz sauber gearbeitet 
haben, bis ich dann bei einem Model aus einem alten Autoradio fündung 
wurde. Vielleicht fängst du erstmal mit nem normalen Taster an.

So, noch was vergessen?

viele Grüße

Biertrinker

von Herbert G. (feuerfuchs)


Lesenswert?

Hi,
sieht echt geil aus, deine Konstruktion ;)

Ich wäre schon stolz auf mich, wenn ich das mit so einem Drehschalter 
und einem Mikrochip hinkriegen würde.
Ich stelle mir das zunächst so vor, dass ich diese Farben beleuchten 
kann:

RGB -> Weiß
RG
RB
GB
R
G
B

Einen Dimmer kann ich dann auch später noch software oder hardwareseitig 
hinzufügen.

Hast du in Assembler programmiert?

von Aike T. (biertrinker)


Lesenswert?

Schau dir einfach mal hier das HowTo an, damit habe ich auch angefangen. 
Da steht eigentlich alles drin, was man für den Anfang an Grundlagen 
braucht.

Ich habe das Projekt zum Teil in ASM und zum Teil in C geschrieben.

viele Grüße und gute Nacht

Biertrinker

von Herbert G. (feuerfuchs)


Lesenswert?

Hatte vorher gar nicht den vor zu... Button gesehen (in dem Howto) :(

Zur Übersichtlichkeit setze ich mal die Fragenreihenfolge des 1. Posts 
fort.

5) Brauche ich einen externen Taktgeber, also einen Quarz oder so?
Schließlich sollten Taktschwankungen ja nicht so schlimm sein, oder?

6) Welche Transistoren müssen zwischen den Mikrocontroller und die LEDs 
zur Verstärkung des Stromes?

7)
Den Sinn von den Ports verstehe ich nicht ganz.
Wie viele hat der ATmega 8?
28/8 = 3 R4,
also hat er 4 Ports?

Oder hat er 11 Ports (das interpretiere Ich aus folgendem Bild:
http://www.mikrocontroller.net/wikifiles/d/dd/Avr-schaltplan-1.gif
)

Hat ein Port immer 8 Pins?

8) Bei folgendem C-Programmierhowto:
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial
steht im ersten Beispielquellcode folgende Zeile:
PORTB = 0x03;             // (4)

Zitat:
(4) stellt die Werte der Ausgänge ein. Die den ersten beiden Bits des 
Ports zugeordneten Anschlüsse (PB0 und PB1) werden 1, alle anderen 
Anschlüsse des Ports B (PB2-PB7) zu 0. Aktivierte Ausgänge (logisch 1 
oder "high") liegen auf Betriebsspannung (VCC, meist 5 Volt), nicht 
aktivierte Ausgänge führen 0 Volt (GND, Bezugspotential).

In Dezimal entspricht "0x03" der Zahl 3.
Wie funktioniert das?
Ich hätte mir das jetz so vorgestellt:

PortB0 = 1;
PortB1 = 1;
PortB2 = 0;
...
PortB7 = 0;

Doch wie kommt man auf "PORTB = 0x03;"? Wie sähe das aus, wenn PortB 4 
und 5 den Wert eins haben sollten, der Rest null?

Ansonsten ist mir der Quellcode soweit klar.

von Dominique G. (dgoersch)


Lesenswert?

Kai P. wrote:
> Doch wie kommt man auf "PORTB = 0x03;"?

0x03 entsprechen 00000011 binär, also sind die beiden untersten Bits des 
Port gesetzt. 0x00 (0) entspricht 00000000 und 0xff (255) wäre demnach 
11111111.

> Wie sähe das aus, wenn PortB 4 und 5 den Wert eins haben sollten, der Rest
> null?

00110000 binär entsprechen 0x30 (48). Damit wären Bit 4 und 5 gesetzt.

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.