mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik PWM Eingänge für ATMega32


Autor: Quehl (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe mehrere Sensoren mit PWM Ausgang, die ich mit dem Mega32 
verarbeiten will. Wie kann man das am Besten machen und wieviele solcher 
Sensoren sind max. anschließbar. Der Wert des Sensors ist das PWM 
Verhältnis.

Falls Beispiele genannt werden, möglichst in Assembler.

mfg
Quehl

Autor: Kai Scheddin (zeusosc)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn deine Sensoren mit PWM ausgängen arbeiten, dann schliess sie
am ADC des ATM32 an,..
7 Ports, (ausser bei differentieller)

beispiele findest du in C und ASM im datasheet von ATmel
www.atmel.com

grüüüüße

Autor: Fred (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

@Kai: da sagt das Datenblatt aber etwas anderes:
- 8 single ended channels
- 7 differential channels (TQFP only)
- 2 differential channels with gain (1x, 10x, 200x)

Und ich würde lieber versuchen, das ganze über die capture funktion des 
timers zu realisieren. Also bei steigender/fallender Flanke einen 
Interrupt generieren und die entsprechenden Timerwerte ermitteln. Die 
Zeitabstände kann man dann in das PWM Verhältnis umrechnen.

Gruß

Fred

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es kommt (wie immer) auf die Details an. Der Umweg über Tiefpass und ADC 
ist prinzipiell eine gute Lösung, aber nicht immer die beste.

Capture ist die beste Lösung, die AVRs (zumindest die mir näher 
bekannten) haben aber nur einen Hardware-Capture-Kanal.

Nun kommt es auf die Frequenz der PWM-Signale an. Ist sie langsam genug, 
kann man die Eingänge pollen und auf Änderung prüfen (mehrkanaliges 
Software-Capture).

Es lohnt sich auch, darüber nachzudenken, ob man nicht einen AVR mit 
Pinchange-Interrupt benutzt, da lässt sich Software-Capture einfacher 
realisieren.

Also, nenne die zu erwartenden Frequenzen, dann sehen wir weiter...

...

Autor: Stefan Wimmer (wswbln)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
...oder man schaltet mit ein paar Port-Pins einen Muxer und legt so die 
zu messenden Eingänge der Reihe nach an den Capture-Eingang zum Messen. 
Dauert dann aber halt immer min. 2 Taktperioden (eine während der 
(asynchron) umgeschaltet wird, die nächste kann man dann messen).

Autor: Ralph (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
oder man sucht sich eine µC aus, der die entsprechenden Anzahl an 
Capture Kanälen hat.
Man sollte dochmal darüber nachdenken ob der Mega32 dann für DIESE 
Anwendung der richtige µC ist.

Autor: Ralph (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Und zu Assembler:

Wer Assembler zu mehr als direkten Registerzugriffe nutzt, ist ein 
Masochist.

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ralph wrote:
> Und zu Assembler:
>
> Wer Assembler zu mehr als direkten Registerzugriffe nutzt, ist ein
> Masochist.

Wie kommst Du zu dieser (diskriminierenden) Aussage?
Ich nutze auch Assembler zum Programmieren von AVRs.

...

Autor: Kai Scheddin (zeusosc)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Fred:
ja ne sry,
meinte 8ports,

zu den sogenannten 7 differentiellen:

man kann ADC0..6 nur differentiell zu ADC0..2 also 3 ports messen,
womit man bei
>>NUR 3 'wirkliche' differnentielle kanäle hat,
nimmt man differentiell nur ein externe refferenzspannung
 an port ADC1 kann man effektiv 7 spannungen differentiell messen.

und natürlich wenn
 8 kanäle...


aber ein frage stellt sich noch:
>>Wie groß ist die ausgangsauflösung deiner sensoren ,10mV?
den der ATMega32 hat nur ein 10bittigen ADC.

grüüüüße

Autor: Wolfram Quehl (quehl)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
also PWM ist digital und darum nicht an den Analogeingängen zu 
gebrauchen, sonst bitte mehr Informationen.
Zeitdauer hatte ich mal was mit 300ms gelesen. Aktuell müßte ich das 
noch nachsehen. Das captureregister fiel mir zwar auch ein, nur gibt es 
dafür nur einen Eingang. Kann man vielleicht die Int. Eingänge benutzen, 
sind immerhin 3 Eingänge mit Captureeingang 4 Eingänge. Da müßte man 
doch im Interupt Zweig nur den Timer1 Stand auslesen und sichern. 
Kleines Problem ist, wenn die Interrupts gleichzeitig auftreten. Bleibt 
die Interruptanforderung solange bestehen, bis der aktuelle Interrupt 
abgearbeitet ist? Dann hätte ich eine kleine Ungenauigkeit drin, die 
aber evtl. akzeptiert werden könnte, wenn die Int.abarbeitung kurz 
gehalten wird.

Pollen ist nicht ganz so gut, weil durch bedingte Jumps unterschiedl. 
Laufzeiten entstehen und die Programme recht groß werden sollen. Nicht 
nur Tests sondern auch Anwendung.

Welcher AVR hat Pinchange Interrupt? Verwenden will ich nur DIP Gehäuse.

mfg
Quehl

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also bei 300ms Periodendauer schafft das der AVR mit Software-Capture 
mit links uns 40 Fieber...

Ich würde die Eingänge (einen Port für 8 Signale, bei Bedarf einen 
weiteren Port für weitere 8 Signale) im Timer-Interrupt abfragen. Mit 
der modifizierten PeDa-Tastenabfrage (Entprellung raus, dafür beide 
Flanken auswerten) ist das mit wenigen Takten in der Timer-ISR getan.
Das Hauptprogramm wertet dann die Flanken-Flags aus und liest den 
(Software-) Zähler ab, den die Timer-ISR hochzählt.
Der (beim Pollen) von Dir befürchtete Jitter durch unterschiedliche 
Programmlaufzeiten tritt nicht auf, das Pollen erfolgt im 
Timer-Interrupt mit einem von Dir frei bestimmbaren Zeitraster.

Da das Programm vermutlich noch etwas mehr tun soll, muss man sehen, wie 
man die restlichen Jobs mit der Timer-ISR verzahnt.

PCI findest Du z.B. bei der Mega[4/8/16]8-Serie (DIL28). Das ist bei der 
langsamen Signalfrequenz aber nicht nötig.

Betreffs ADC: Jedes PWM-Signal lässt sich mit einem Tiefpass zu einem 
Analogsignal wandeln und dann mit ADC messen. Ob das sinnvoll ist, 
entscheidet der Einzelfall. Signale mit Periodendauer über 10ms (unter 
100Hz) würde ich durch Tastgradmessung (Zeitmessung, Software-Capture) 
auswerten.

...

Autor: quehl (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
danke, das hört sich ganz gut an. Meine Gedanken waren von den Flanken 
als genaueste Möglichkeit vernebelt. Und weil das so in den 
Datenblättern steht.

PCI sind doch die Interruptpins? Die gibt es beim Mega32 auch. da sogar 
3 Pins und beim Mega8 nur 2 Pins. Sonst hab ich beim Mega8 nichts 
darüber gefunden.

Je nach Anforderung werde ich mal beides im Auge behalten.

mfg
Quehl

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
PCI: Ich sprach nicht vom Mega8 sondern vom Mega48, Mega88 und Mega168. 
Schau mal in dessen Datenblatt. Externer Interrupt und PCI sind 
Zweierlei.

Bei Deinem Tempo (unter 100Hz) fährts Du aber mit Scann im 
Timer-Interrupt bedeutend ressourcenschonender. Außerdem kannst Du einen 
Software-Zähler nehmen, dessen Zähltakt Du mit einem Timer Deinen 
Wünschen anpassen kannst. Dies kann (falls alle Sensoren mit halbwegs 
gleicher Frequenz "klappern") Divisionen einsparen, die beim AVR recht 
ressourcenfressend sind.

...

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.