Forum: Mikrocontroller und Digitale Elektronik Suche günstigen 5V Mikrocontroller mit 6 PWM Channel für LED Steuerung


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Marcel B. (the_s616)


Lesenswert?

Guten Morgen Community,

bei meiner Suche nach einem passenden Controller bin ich auf die 
PIC24F08KMXXX Serie gestoßen, als konkretes Modell sei hier der 
PIC24F08KM101 genannt. Laut MAPS kann dieser maximal 7 PWM Chanel bereit 
stellen. Da diese Serie soweit ich es überblicke alle Anforderungen 
erfüllen würde ich mich für Controller aus der Serie entscheiden, doch 
sind diese mit einem Preis von knapp 2 Euro das Stück nicht unbedingt so 
günstig.

Da ich mich bisher hauptsächlich Theoretisch mit Elektrotechnik befassen 
musste und MCU Technik nur 1 Jahr in der Schule hatte, fehlt mir leider 
der Überblick über die möglichen Kandidaten, so dass ich euch um eure 
Hilfe bitten möchte einen passenden zu finden.

Die Anforderungen an den Controller sind nicht sehr hoch, so dass ein 
PIC24 wohl überpowert wäre, daher hier einmal kurz die Anforderungen an 
den Controller:

1. 5V Versorgungsspannung.
2. 6 unabhängige PWM Chanel. (Könnte auch via Soft PWM gelöst werden)
3. 12 Bit PWM Genauigkeit.
4. PWM Frequenz von etwa 2kHz.
5. Eine UART Schnittstelle, wenn der Aufpreis für CAN unter 10 ct. 
liegt, wäre CAN erwünscht.
6. Pro I/O Port, der PWM liefert 20mA seek Current, also gesamt 120mA.
7. Reset + 1 Externer Interrupt

Da ich mich in dem Gebiet echt nicht auskenne, würde ich mich freuen, 
von euch ein paar hilfreiche Vorschläge zu bekommen. Der MCU muss nichts 
anderes können, als über UART (oder CAN) Daten für die LED Steuerung zu 
erhalten.
Diese Daten bestehen pro Chanel aus einem Zielwert (0 - 255) und aus 
einem Verzögerungswert, der null oder auch einen Wert in ms haben kann.
Während der Verzögerung soll die LED des jeweiligen Chanels gleichmäßig 
auf den Zielwert herunter gedimmt werden.
(Innerhalb des MCUs Linear, außerhalb mittels vor berechnetem Array auf 
die Helligkeitswahrnehmung abgestimmt.)
Bei dieser Aufgabe wird vermutlich nicht so viel Rechenleistung oder 
besonders viel Speicher benötigt.

Es ist geplant den Controller zusammen mit den LEDs auf eine kleine 
Platine als LEDs Modul zu verbauen. Da für eine gleichmäßige passive 
Beleuchtung mit 160 Modulen gerechnet werden, drückt ein teurer 
Controller natürlich ordentlich auf den Geldbeutel, daher hoffe ich auf 
günstige und funktionale Alternativen zu der PIC24F08MKXXX Serie.

Das waren jetzt soweit alle Infos die mir einfallen, sollte noch etwas 
wichtiges Fehlen werde ich dies so schnell wie möglich nach reichen.

Mit freundlichen Grüßen
Marcel

von A. S. (Gast)


Lesenswert?

SW PWM mit 6*(4096*2kHz) Auflösung ist sportlich. Wenn es nur fürs 
menschliche Auge ist, reicht deutlich weniger.

120mA auch.

Möglich wäre auch ein zweiter Controller und dann je 3 HWPWMs. Ein 
reiner Slave ist relativ einfach.

von Schwarzseher (Gast)


Lesenswert?

Nur so als Idee: Kennst du den PCA9685 ?

Ok, ist etwas overkill mit 16 PWM-Channels á 12 Bit, aber für die 
Extra-Kanäle findet sich sicher eine Verwendung.

Dann muss dein µC nur Uart/Can -> I²C Übersetzer spielen.
Und rein theoretisch können da 62 solche Chips an einen I²C-Bus. Je 
nachdem wie dein Gesamt-System aussieht, kannst du evtl. gleich hunderte 
PWM-Kanäle mit einem Zentralen µC verwalten, deine LED-Steuermodule nur 
mit PCA9685 bestücken (gibt billige Platinen fix und fertig aus China), 
und als Bus-System I²C, ggfs. mit Repeatern alle xx Meter, verwenden.

von Peter D. (peda)


Lesenswert?

Achim S. schrieb:
> SW PWM mit 6*(4096*2kHz) Auflösung ist sportlich. Wenn es nur fürs
> menschliche Auge ist, reicht deutlich weniger.

2kHz sind schon o.k., wenn man auch bei Bewegung kein PWM-Flimmern sehen 
möchte.
Hier mal ein Codebeispiel:

Beitrag "AVR: Fast-PWM (BAM) 12 Bit für 8 Kanäle"

Mit UART wäre z.B. der ATtiny2313 dafür geeignet.
Microchip gibt ab 100Stck 0,55$ als Preis an (0,67$ ab 1Stück).

: Bearbeitet durch User
von Wolfgang (Gast)


Lesenswert?

Schwarzseher schrieb:
> Ok, ist etwas overkill mit 16 PWM-Channels á 12 Bit, aber für die
> Extra-Kanäle findet sich sicher eine Verwendung.

Und wenn nicht, ist das bei knapp 12ct pro Kanal auch nicht so tragisch 
;-)
z.B. ebay 401230985895

von A. S. (Gast)


Lesenswert?

Peter D. schrieb:
> Hier mal ein Codebeispiel:

ohne das jetzt analysiert zu haben, ... Dort kannst Du ohne HW-PWM jeden 
Kanal einzeln auf 120ns (1/8MHz) genau steuern und das auch noch faden 
UND nebenbei CAN oder Serielle machen? Respekt. Ohne HW-Unterstützung 
(z.B. Pattern-Generator) muss das schon sehr ausgefuchst sein. 
Spätestens, wenn 2 PWMs relativ nahe beieinander liegen.

von ... (Gast)


Lesenswert?

PIC24F08KM202
dsPIC33EV32GM002
PIC24F16KM202
dsPIC33EV64GM002
dsPIC33EV32GM102
dsPIC33EV32GM004
PIC24F08KM204
dsPIC33EV128GM002
PIC24F16KM204
dsPIC33EV64GM102
dsPIC33EV64GM004
dsPIC33EV32GM006
dsPIC33EV32GM104
dsPIC33EV128GM102
dsPIC33EV128GM004
dsPIC33EV256GM002
dsPIC33EV64GM006
dsPIC33EV64GM104
.
.
.

von avr (Gast)


Lesenswert?

Achim S. schrieb:
> Dort kannst Du ohne HW-PWM jeden Kanal einzeln auf 120ns (1/8MHz) genau
> steuern und das auch noch faden UND nebenbei CAN oder Serielle machen?

So besonders ist das nicht. BAM Modulation ist keine pwm. Es werden N 
Pulse ausgeben mit der einer Länge von jeweils 2^n. Die kürzesten Pulse 
sind am zeitkritischsten und werden mit gesperrten Interrupts 
durchgeführt. Das geht bei avrs zyklengenau bis zur Traktate, also bis 
20MHz. Das gleiche lässt sich etwas langsamer bei Arms auch mit DMA 
machen. Mit Schieberegistern und OE Pin geht das mit einem pwm Kanal für 
das ganze Register.

von Marcel B. (the_s616)


Lesenswert?

Achim S. schrieb:
> Möglich wäre auch ein zweiter Controller und dann je 3 HWPWMs. Ein
> reiner Slave ist relativ einfach.

Daran mehrere Controller zu nutzen, habe ich tatsächlich noch nicht 
gedacht.
Wird vermutlich günstiger werden, als einen großen zu verwenden.

Der PCA9685 ist in der Tat etwas groß.

Peter D. schrieb:
> Mit UART wäre z.B. der ATtiny2313 dafür geeignet.
> Microchip gibt ab 100Stck 0,55$ als Preis an (0,67$ ab 1Stück).

Der kleine Bursche scheint sehr gut geeignet zu sein :D

Auf den "... (Gast) " muss ich wohl nicht genauer eingehen, wenn man 
mehr als nur die Überschrift liest, wird es klar werden...

Eine möglichst kleine Lösung würde mir am besten gefallen, denn es geht 
um einen möglichen Controller für dieses Projekt: 
Beitrag "Gibt es einen passenden BUS zur steuerung vieler Clients über mehrere Meter?"

Da es sich in diesem Beitrag eher um den BUS statt um das System drehen 
sollte, habe ich dieses Thema versucht aus zu lagern.
Insgesamt wird auch nur ein Stromfluss von 80mA / 4 (pro Pin) + 2 mal 
Transistorsteuerung benötigt.
Ich hatte vergessen, dass ich nicht alle LEDs auf 0V herunter ziehe.


Ich bedanke mich bis hier hin auf jeden Fall für eure Antworten, auch 
wenn ich teilweise noch genau nach rechnen muss. :D

Mit freundlichen Grüßen
Marcel

von Peter D. (peda)


Lesenswert?

Achim S. schrieb:
> ohne das jetzt analysiert zu haben, ... Dort kannst Du ohne HW-PWM jeden
> Kanal einzeln auf 120ns (1/8MHz) genau steuern und das auch noch faden
> UND nebenbei CAN oder Serielle machen? Respekt.

So schlimm ist das nicht. Die CPU-Last beträgt bei 12Bit 9%. Es bleibt 
also genug Zeit fürs Faden und das Empfangsprotokoll.
Die BAM-Idee (Assembler und C kombiniert) ist auch nicht von mir.
Einen Wermutstropfen gibt es aber, der AVR kann keine 
Interruptprioritäten. CAN oder UART muß man also in der Mainloop pollen, 
damit die PWM nicht flackert.

: Bearbeitet durch User
von Marcel B. (the_s616)


Angehängte Dateien:

Lesenswert?

Ich habe jetzt mal einen Schaltplan fertig gestellt und würde mich über 
kurzes Feedback zu der Schaltung freuen.

Ich bin mir mit den PMOS Transistoren noch unsicher, eventuell kennt ja 
einer von euch noch eine andere Schaltmöglichkeit.
Der Spannungsdrop an den LEDs ist an den +12V -> +5V Strecken 6V, bei 
den übrigen 9,6V.
Die LEDs werden jeweils mit 20mA durch flossen.


Mit freundlichen Grüßen.
Marcel

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.