Forum: Analoge Elektronik und Schaltungstechnik Mikrocontroller mit DAC?


von Dieter H. (kyblord)


Lesenswert?

Hallo,

ich brauche zwecks eines Projekts einen analoge Spannung, die ich mit 
einem uC vorgeben kann. Wie kann ich das lösen? Gibt es günstige uCs mit 
einem DAC?
Kann ich einfach einen PWM Ausgang mit einem Tiefpass (RC) glätten?
Gibt es ICs, die ein PWM signal wandeln?

von H. H. (Gast)


Lesenswert?

Dieter H. schrieb:
> ich brauche zwecks eines Projekts einen analoge Spannung, die ich mit
> einem uC vorgeben kann. Wie kann ich das lösen?

Bei Geheimprojekten ist Hilfe kaum möglich, da kennt ja niemand die 
Anforderungen.

von Hans (Gast)


Lesenswert?

Dieter H. schrieb:
> Hallo,
Ebenso.
> ich brauche zwecks eines Projekts einen analoge Spannung, die ich mit
> einem uC vorgeben kann. Wie kann ich das lösen?
Es gibt viele Lösungen.
> Gibt es günstige uCs mit einem DAC?
Ja.
> Kann ich einfach einen PWM Ausgang mit einem Tiefpass (RC) glätten?
Ja.
> Gibt es ICs, die ein PWM signal wandeln?
Aber sicher doch.

Und bist du jetzt schlauer???

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Dieter H. schrieb:
> Kann ich einfach einen PWM Ausgang mit einem Tiefpass (RC) glätten?

Ja, das ist eine durchaus übliche Variante.

Es gibt aber auch ausreichend Controller mit parallelem DAC.

von Dieter H. (kyblord)


Lesenswert?

Jörg W. schrieb:
> Dieter H. schrieb:
>> Kann ich einfach einen PWM Ausgang mit einem Tiefpass (RC) glätten?
>
> Ja, das ist eine durchaus übliche Variante.
>
> Es gibt aber auch ausreichend Controller mit parallelem DAC.

Kannst du mir ein paar uCs nennen? Gibt es da AVRs oder PICs? STMs 
kriegt man ja gerade gar nicht.

von fchk (Gast)


Lesenswert?

Schau her:
https://ww1.microchip.com/downloads/en/DeviceDoc/22272C.pdf
Kannst Du an Deinen Liebling-uC direkt anschließen.

fchk

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Dieter H. schrieb:
> Kannst du mir ein paar uCs nennen?

Wenn es keine STMs gibt, dann schau dich einfach bei anderen Herstellern 
um. Spontan fiele mir SAMD21 und dessen Verwandte ein, aber das liegt 
jetzt auch nur daran, dass ich da schon mal irgendwann das Datenblatt 
vor der Nase hatte und mich daher dran erinnern kann.

von Veit D. (devil-elec)


Lesenswert?

Hallo,

AVR DA Serie ... 10Bit
AVR DB Serie ... 10Bit
AVR tinyAVR 1er Serie ...8Bit
Oder externen DAC mittels I2C oder SPI.
Tiefpass geht natürlich auch, wenn die Anforderung moderat ist.

: Bearbeitet durch User
von Horst M. (horst)


Lesenswert?


von MaNi (Gast)


Lesenswert?

Und da es keine Anforderungen an Genauigkeit, Auflösung und 
Geschwindigkeit gibt werfe ich Mal noch die R2R Variante in den Raum 
DA-Wandler

von pushpop (Gast)


Lesenswert?

>Kannst du mir ein paar uCs nennen? Gibt es da AVRs oder PICs? STMs
>kriegt man ja gerade gar nicht.
Du willst einen AVR oder PIC?
Warum schaust Du nicht einfach bei Microchip nach AVRs oder PICs mit 
DAC?
Zu faul? Sollen wir das machen?

von PSoC (Gast)


Lesenswert?

Zwar nicht der günstigste aber sehr komfortabel bzgl. DAC sind auch die 
PSoc5LP von Infineon/Cypress. Aber auch diverse PICs haben 5Bit (ob mehr 
weiß ich gerade nich) DACs.

von PSoC (Gast)


Lesenswert?


von Kron (Gast)


Lesenswert?

PSoC schrieb:
> ... hier solltest Du fündig werden:
> 
https://www.microchip.com/en-us/products/microcontrollers-and-microprocessors/8-bit-mcus/core-independent-and-analog-peripherals/integrated-analog/digital-to-analog-converter

Bei Microchip gibt es parametrische Suchmöglichkeiten, es gibt 'zig µC 
mit DAC-Ausgängen, bis zu 8 Stück

von Patrick L. (Firma: S-C-I DATA GbR) (pali64)


Lesenswert?

Und die MSP430 bei TI können dies alle auch ;-)

Und wenn du es Richtig machst giebt's Einzelstücke sogar direkt bei TI 
als Free sample.
[Humor]
Bitte nicht Schlagen wenn ich nicht auch AVR oder PIC schreie ..GRINS..
[/Humor]
Aber es gibt auch die allseits beliebten TI-Launchpads ;-)

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Patrick L. schrieb:
> Und die MSP430 bei TI können dies alle auch ;-)

Bei denen muss man aber erstmal ein paar Dutzend Seiten Errata 
studieren, ob davon der konkrete Anwendungsfall vielleicht jetzt 
betroffen ist.

Das hat mich schon etwas geschockt, als ich das erste Mal mit den Teilen 
zu tun hatte.

von Patrick L. (Firma: S-C-I DATA GbR) (pali64)


Lesenswert?

Jörg W. schrieb:
> Das hat mich schon etwas geschockt, als ich das erste Mal mit den Teilen
> zu tun hatte.

Na es Gibt wenigstens dank den XMSP's auch Errata's, bei vielen anderen 
MPU's geht's einfach nicht und keiner weis warum ;-)
Dazu sind wir als Fremdfirmen-Betatester da, die von TI im 
Unterstützerteam sind;-)

Nee wenn man ein Aktuellen und von TI supported Kompiler verwendet, muss 
man sich nicht um die Errata kümmern, denn das macht der Kompiler für 
dich.

Natürlich nur wenn man auch eine aktuelle Version hat.

: Bearbeitet durch User
von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Patrick L. schrieb:
> Nee wenn man ein Aktuellen und von TI supported Kompiler verwendet, muss
> man sich nicht um die Errata kümmern, denn das macht der Kompiler für
> dich.

Wie kümmert sich ein Compiler drum, wenn man einen Timer nicht während 
des Betriebs sicher auslesen kann, ohne ihn vorher anzuhalten? Baut der 
Compiler dann automatisch Code ein, der den Timer kurz stoppt? Das würde 
mir anders über die Hutschnur gehen …

von Patrick L. (Firma: S-C-I DATA GbR) (pali64)


Lesenswert?

Jörg W. schrieb:
> Wie kümmert sich ein Compiler drum,

Je nach Errata bzw Bug.
IAR zum Beispiel, aus Erfahrung:
BUG "insert a Nop bevore Set General Interrupt Enable bit"
generierter Code:
1
NOP                       ; If important on Architectur of MSP430FR2355 boefore GIE set!
2
bis.b   #GIE+CPUOFF,SR    ; Set General Interrupt Enable bit
Sprich Kompiler fügt es selber ein

Dein genanntes oder ähnliches:
Kompiler gibt Warnung aus und macht dich auf den Bug aufmerksam.
Schlägt oft wen möglich, auch grad Lösung vor.

In den Errata's steht das übrigens auch welche Kompiler diesen Bug 
selber und wie lösen, oder dir ein Lösungsvorschlag unterbreiten.

Mittlerweile sind da sogar auch GNU Kompiler mit erwähnt.

Ich für mein Teil lese aus Prinzip zuerst Datenblatt und allenfalls das 
Errata wenn ich ein "Livesupported Design" mache, ansonsten würde mir 
der QM was Husten.

Jeder  MPU Kennt Bug's
In PIC wimmelte es, als ich den noch verwendete und ein Errata gab's in 
dem sinne noch nicht. AVR's kennen auch längere Erratas (Wurde an 
anderer Stelle hier im Forum aber auch schon von Nutzern Zitiert)
Ja selbst in Intels usw.

Es ist nicht Grundlos das die TI MSP430 zu den wenigen MPU's gehören die 
FDI Zulassungen haben. Ein PIC würde es beispielsweise wohl eher nicht 
in einen Herzschrittmacher schaffen.

: Bearbeitet durch User
von Patrick C. (pcrom)


Lesenswert?

PSoC schrieb:
> Zwar nicht der günstigste aber sehr komfortabel bzgl. DAC sind auch die
> PSoc5LP von Infineon/Cypress.

Konfortabel >> Voellig einverstanden
Nicht der Günstigste >> Fuer einige exempleren sehr billig

Also fuer $10 bekommt man ein kit genennt CY8CKIT059, processorboard 
PSOC-5lp MIT abbrechbaren Programmer. Enthaelt ARM prozessor 4 Voltage 
DACs, 4 Strom-DACs, 2 SAR-ADCs, 1 High-precision Delta-Sigma ADC der an 
jedem Pin gemultiplexed werden kann und noch viel mehr. Alles on-board 
ohne zusatzliche Komponenten.

Ja, teuerer wird es wenn man der processor auf eine eigene platine haben 
woll, dann kostet er wahrscheinlich mehr als $10 aber fuer hobbie reicht 
oft der CY8CKIT059 (oder einer der andere developer-boards, auch 
verfuerbar mit Anschlusz fuer Arduino-shields)

Patrick aus die Niederlaende.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Patrick L. schrieb:
> Dein genanntes oder ähnliches:
> Kompiler gibt Warnung aus und macht dich auf den Bug aufmerksam.

Na gut, das geht noch.

Allerdings fand ich den Bug selbst (und dass er auf der ewigen 
Weltbestenliste verblieb, ohne Chance, ihn zu reparieren) arg 
bescheuert. Wenn ich einen Timer erst anhalten muss zum sicheren 
Auslesen, dann hat der Hardwaredesigner schlicht was vergeigt 
(Synchronizer verpasst). Das gehört repariert und nicht nur 
dokumentiert.

Damit war das Teil damals für uns praktisch unbrauchbar, denn weder 
zwischenzeitliches Anhalten noch dreimaliges Auslesen wären in dieser 
Anwendung machbar gewesen. Der Kunde, der da unbedingt einen MSP430 drin 
haben wollte, war dann aber eh abgesprungen.

von Loxo (Gast)


Lesenswert?

Patrick C. schrieb:

> Also fuer $10 bekommt man ein kit genennt CY8CKIT059, processorboard
> PSOC-5lp MIT abbrechbaren Programmer. Enthaelt ARM prozessor 4 Voltage
> DACs, 4 Strom-DACs, 2 SAR-ADCs, 1 High-precision Delta-Sigma ADC der an
> jedem Pin gemultiplexed werden kann und noch viel mehr. Alles on-board
> ohne zusatzliche Komponenten.

Hast du einen Link wo dieses Kit zu dem Preis noch zu bekommen ist?

von m.n. (Gast)


Lesenswert?

H. H. schrieb:
>> ich brauche zwecks eines Projekts einen analoge Spannung, die ich mit
>> einem uC vorgeben kann. Wie kann ich das lösen?
>
> Bei Geheimprojekten ist Hilfe kaum möglich, da kennt ja niemand die
> Anforderungen.

Die vielen Antworten beweisen doch das Gegenteil ;-)
Mein Vorschlag wäre ein Motorpoti.
Damit können dann die 230 VAC beliebig verändert werden.

Dieter H. schrieb:
> STMs kriegt man ja gerade gar nicht.

Welchen hattest Du Dir denn ausgesucht? Hast Du mal eine LED blinken 
lassen?
Will Dein Lehrer vielleicht einen 8051 sehen?

von Patrick L. (Firma: S-C-I DATA GbR) (pali64)


Lesenswert?

[OT]
Jörg W. schrieb:
> Damit war das Teil damals für uns praktisch unbrauchbar, denn weder
> zwischenzeitliches Anhalten noch dreimaliges Auslesen wären in dieser
> Anwendung machbar gewesen.

Ja tut mir Leid für Dich, hättest du mich gefragt hätte ich dir eine 
bessere Lösung gehabt.
War Tatsächlich da ein Betatester hab noch von den XMSP dieses Bugs hier 
;-)

Beste Lösung (Etwas verrückt aber ging) Timer nicht in RAM oder Register 
Kopieren, sondern in eine andere Pheripherie die du nicht brauchst und 
von dort dann abholen. Ist zwar ein Undokumentierter Workaround (Auf 
mein Vorschlag diesen aufzunehmen Antwort von TI "Zu Komplex für den 
Nutzer")

Ich habe Hier einer mit Integriertem LCD Kontroller, da nutze ich LCD 
Segmentspeicher für solche Sachen, von Pins die eh nicht ausgeführt 
sind.
Obendrein sind die Befehle auch meist schneller als zuerst in ein RAM zu 
kopieren. Manchmal nutze ich auch PIN I/O Pheripherien von nicht 
ausgeführten Pins, für solche (Makaberen Zwischenspeicher) man kann sich 
so ein paar Byte mehr RAM "Ergattern" da ja jeder Befehl der auf RAM 
passt, passt auch auf Pheripherie.
Auch wen MPY vorhanden ist, mache ich Oft über Berechnungen 
Speicherzugriffe und verwende dann je nach art der Adressierung eines 
der Res(8bit) oder Res(16bit) Register. Sehr schnelle Zugriffe lassen 
sich so auch mit dem MAC der MPY32 machen ;-)
"Multiplikation und automatisches Addieren, über einen DMA Kanal 
ersetzen den von mir aus der Z80er zeit fehlenden LDIR Befehl" eignet 
sich hervorragend für Tabellen.

Der Bug war ähnlich sch...e wie der Coproz Bug von Intel damals.

Also wenn wer Probleme mit Erratas hat, mich fragen.
Wen ich den XMSP dieses MPU's besitze weis ich in der Regel auch ne 
Lösung.
[/OT]

von BoomBoomMagic (Gast)


Lesenswert?

Die Picaxe (www.picaxe.com) hat nen DAC.
Aber nur 5Bit.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Patrick L. schrieb:
> Also wenn wer Probleme mit Erratas hat, mich fragen

Ja, wenn sie mir nochmal übern Weg laufen. ;-)

Später haben wir dann aber auch die Xmegas durch ARM ersetzt, da wurde 
vieles unkritischer. Auch die Portierung von Atmel-ARM auf STM32 war so 
kompliziert nicht, am meisten Aufwand hat der völlig andere 
Extern-Interrupt-Kram gebraucht.

Aber ja, OT, außer dass es natürlich massig ARMs mit integriertem 
(Parallel-)DAC gibt. Aber Dieter ist sowieso verschwunden.

von Patrick C. (pcrom)


Lesenswert?

Loxo schrieb:
> Hast du einen Link wo dieses Kit zu dem Preis noch zu bekommen ist?

Sorry ich sehe jetzt das das in der Tat schwierig wird. Habe selber noch 
10 davon liegen, vor 2 jahren gekauft ich denke bei Cypress selber.

von PSoC (Gast)


Lesenswert?

Patrick C. schrieb:
> Konfortabel >> Voellig einverstanden
> Nicht der Günstigste >> Fuer einige exempleren sehr billig

Im Prinzip meinte ich es genauso. Das Evalkit (wenn erhältlich) ist 
wirklich günstig, nur als Einzel-IC (auch in großen Stückzahlen) sind 
die PSoC meißt teuerer als andere.

von Wolfgang (Gast)


Lesenswert?

m.n. schrieb:
> H. H. schrieb:
>>> ich brauche zwecks eines Projekts einen analoge Spannung, die ich mit
>>> einem uC vorgeben kann. Wie kann ich das lösen?
>>
>> Bei Geheimprojekten ist Hilfe kaum möglich, da kennt ja niemand die
>> Anforderungen.
>
> Die vielen Antworten beweisen doch das Gegenteil ;-)

Woher weißt du, ob die vielen Antworten eine Hilfe sind. Ohne die 
Anforderungen zu kennen, kann man nur vermuten, dass eine passende 
Lösung dabei ist. Der Nebelwand von möglichen Lösungsansätzen gibt dem 
TO immer noch keine Antwort, wie er zur Lösung SEINES Problem am besten 
vorgehen soll.

von Patrick L. (Firma: S-C-I DATA GbR) (pali64)


Lesenswert?

Jörg W. schrieb:
> Damit war das Teil damals für uns praktisch unbrauchbar,

Noch mal's Kurz ein [OT]
Habe nachgeschaut warum der Bug so lange Bestand:
Ursache trat nicht immer auf, es wurde am Stärksten wenn der Timer 
Asynchron zur CPU läuft. dan konnte tatsächlich wärend des Auslesen ein 
paar Bit Instabil werden und das Ausgelesene meist in den unteren 4 Bit 
Nibbles irgend was drin haben, nur nicht dass was im Timer stand.

Nachvolgende Timer die dann Ohne diesen Bug waren, Haben ein 
Zusätzliches Shadowregister bekommen (Was eine massive Layoutänderung 
des Die bedeutete) was dann aber der CPU ermöglichte den Timer Synchron 
auszulesen.
Deshalb blieb der Bug, über mehrere Versionen bestehen und auch auf 
mehreren Typen vorhanden.

Im übrigen ist mit genau diesem Bug (Der ja Logisch ist wen CPU und 
Timer asynchron getaktet werden) auch bei einigen Anderen MCU's 
vorhanden (Nicht TI) aber oft nicht dokumentiert. und sorgt in der 
Realen Welt immer wieder zu Kuriosen Verhalten von Programmen, auf 
Verschiedenen MCU's und Hersteller.
Einige haben dies sogar damit gelöst das die CPU Kurzzeitig angehalten 
wird, um Timer auszulesen, was ich speziell als schlechtere Variante 
ansehe als das Shadow Register.
[/OT]

von Bauform B. (bauformb)


Lesenswert?

Dieter H. schrieb:
> Gibt es da AVRs oder PICs? STMs kriegt man ja gerade gar nicht.

Mit dem Argument nimmt man doch auf jeden Fall einen externen DAC. Wenn 
man 2 oder mehr Kanäle braucht, spart I2C sogar Pins. Mit SPI sind auch 
20MHz Abtastrate möglich. Und bei Reichelt gibt's jede Menge Auswahl ab 
0.53€

https://www.reichelt.de/signalwandlung-c8710.html?&nbc=1

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Patrick L. schrieb:
> Ursache trat nicht immer auf, es wurde am Stärksten wenn der Timer
> Asynchron zur CPU läuft.

Das war auch bei uns der Fall.

Allerdings: andere Architekturen synchronisieren in diesem Fall den 
Timer-Takt mit dem CPU-Takt (was natürlich zur Folge hat, dass er 
maximal halb so groß werden kann, hätte uns aber genügt), um genau das 
Problem zu vermeiden. Oder aber, gängige Methode beim mit dem 
32-kHz-Quarz getakteten Timer, man hat ein "busy"-Flag, auf das man 
warten muss.

von Alex (Gast)


Lesenswert?

Viele PIC18 haben einen 5 Bit DAC, zum Beispiel PIC18F46K22 oder 
PIC18F47K42. 5 Bit ist natürlich wenig. Die DACs sind eher dazu gedacht, 
die Referenzspannungen für den ADC zu erzeugen.

von Patrick L. (Firma: S-C-I DATA GbR) (pali64)


Lesenswert?

Alex schrieb:
> Die DACs sind eher dazu gedacht,
> die Referenzspannungen für den ADC zu erzeugen.

Ja 5 oder 6 Bit ist gar nicht unüblich zu dem Zweck.
Auch für Komparatoren werden in MCU's oft 6 Bit DAC's verwendet.
Siehe Da: 
https://www.mikrocontroller.net/articles/MSP430#Analog_Peripherie

von Alex (Gast)


Lesenswert?

Eine quick & dirty Lösung wäre auch, ein R/2R-Netzwerk aufzubauen. Falls 
Du schon einen µC Deiner Wahl hast und falls ein 8 Bit-Port noch frei 
ist, dann
wäre das R/2R-Netzwerk eine Notlösung.

Falls Du nicht so viele Widerstände parallel oder in Serie schalten 
möchtest, kannst Du mit E24-Werten leicht passende Wertekombinationen 
erzeugen: 10k/20k, 11k/22k, 12k/24k, 15k/30k, 18k/36k.

von Patrick L. (Firma: S-C-I DATA GbR) (pali64)


Lesenswert?

Alex schrieb:
> wäre das R/2R-Netzwerk eine Notlösung.

Habe ich gaaaanz früher noch bei GA's so ALTERA EPM-MAX7032 & Co 
gemacht.
(PS: Nicht mit MAXIM MAX7032 verwechseln das ist ganz was anderes)
Habe aber dazu R/2R Netzwerke im SIP genommen, die waren extra für das 
gemacht.
Ich glaube habe da sogar noch etliche von im Ersatzteillager :-D

: Bearbeitet durch User
von Patrick C. (pcrom)


Lesenswert?

Patrick C. schrieb:
> Loxo schrieb:
>> Hast du einen Link wo dieses Kit zu dem Preis noch zu bekommen ist?
>
> Sorry ich sehe jetzt das das in der Tat schwierig wird. Habe selber noch
> 10 davon liegen, vor 2 jahren gekauft ich denke bei Cypress selber.

Update : Es gibt noch andere kits die einen PSOC-5LP CY8C5868LTI-LP039 
benutzen als abbrechbarer programmer, die kann man auch 
neu-programmieren mittels USB-bootloader.
zB die folgende kits :
CY8CKIT-043
CY8CKIT-146

Beiden haben sowohl der programmer als auch irgendeinen PSOC4 drauf.
Preise  unter 10 euro (Lieferanten u.a. Farnell, RS, Digikey, Mouser)

Solange es noch verfuerbar ist... Ich habe mir gleich einige davon 
bestellt

Patrick aus die Niederlaende

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.