Forum: Mikrocontroller und Digitale Elektronik Mit Poti LED's einschalten


von Martin (Gast)


Lesenswert?

Hallo

Ich bin noch ziemlich neu auf dem Gebiet der µC. Bisher habe ich nur mit 
digitalen I/O gearbeitet. Jetzt bin ich aber so weit, dass ich mich mit 
dem ADC befassen will.
Ich habe vor mit einem Poti, jenachdem wie viel es aufgedreht ist 
verschieden viele LED's leuchten zu lassen.
Bisher ist leider noch nichts brauchbares heraus gekommen. Deshalb hoffe 
ich, dass ihr mir vielleicht helfen könntet, dass es klappt.

Ich habe den dsPIC33FJ256MC710A, den CCS PCD Compiler, MPLAB X IDE und
das dsPICDEM MCLV Board.

mfg

von Chris B. (dekatz)


Lesenswert?

Neben dem allgemeinen DataSheet für den dsPIC33FJ256MC710A solltest du 
dir unbedingt das Dokument DS70183 bei MICROCHIP oder hier
http://www.ee.up.ac.za/main/_media/en/undergrad/subjects/esp300/ad_70183c.pdf
runterladen.
Beschreibt den ADC des dsPIC33F inklusive diverser Beispiel in C.
Umsetzen auf deinen C-Compiler musst du diese schon selbst - falls es 
beim Compiler keine Beispiel für 16-Bit-PIC gibt.

von Peter D. (peda)


Lesenswert?

Martin schrieb:
> Ich habe vor mit einem Poti, jenachdem wie viel es aufgedreht ist
> verschieden viele LED's leuchten zu lassen.

Das kann jeder 8-Bitter mit internem ADC.
Z.B. der ATtiny13 hat einen 10Bit-ADC, damit kannst Du bis zu 1023 LEDs 
auflösen.
Da er keine 1023 Outputs hat, muß man eine entsprechende Anzahl 74HC595 
kaskadieren.

von Digi S. (digispark)


Lesenswert?

ich bemühe mal meine Glaskugel, da Du nichts darüber schreibst, wo das 
Problem ist oder wie Deine Schaltung aussieht.

Trotzdem vermute ich, dass es schon an der Anschaltung des Poti 
scheitert. Der ADC kann nur eine Spannung aber keinen Widerstand messen. 
Also musst Du dem Controller abhängig von der Stellung des Potis eine 
andere Spannung zuführen. Dazu brauchst Du wiederum im einfachsten Fall 
einen Spannungsteiler. Hast Du den?

von Martin (Gast)


Lesenswert?

Es ist mir klar, dass es sicher Methoden gibt die Einfacher sind. Mir 
geht es aber darum zu lernen wie man den ADC vom dsPIC33FJ anwendet.

von Martin (Gast)


Angehängte Dateien:

Lesenswert?

Ich verwende das dsPICDEM MCLV Developmetn Board. Daher glaube ich 
nicht, dass das Poti falsch angeschlossen ist.

von Rene S. (Firma: BfEHS) (rschube)


Lesenswert?

Hallo,

das ist doch eine einfach Übungsaufgabe.
Du hängst das Poti zwischen VCC und GND und den mittleren Pin an deinen 
ADC Eingang. Wenn dein Wandler mit z.B. 8 bit läuft kannst du den 
Messwert direkt auf einen Port mit 8 LEDs ausgeben, fertig. Wenn du Lust 
hast kannst du das dann auch mit 16 bit usw. machen.

Grüße aus Berlin

von A. S. (rava)


Lesenswert?

1. ADC-Wert auslesen
2. Eingangswerte in Ausgangswerte umrechnen
3. Ausgabe
4. goto 1

wo hakt's?

von cppler (Gast)


Lesenswert?

Und was hast Du jetzt am ADC nicht verstanden ?
Beim ADC ist das analog zu den digitalen Ports, d.h. für jede Stellung 
des Potis erscheint ein Bitmuster im Register das den aktuellen 
Spannungswert darstellt.
Stelle Dir einfach vor Du hast Schalter an einem digitalen Port und je 
nachdem welche davon geschaltet sind bekommst Du Deinen Wert.
Oder haperts an grundlegenderen Dingen ?

von Chris B. (dekatz)


Lesenswert?

A. S. schrieb:
> wo hakt's?

Vielleicht hat der CCS-Compiler keine dsPIC33 Libs welche eine 
"komfortable" ADC-Handhabung a la
....
OpenADC(configuration-pipapo);
adc_wert = ReadADC(1);  //lies Kanal AN1 ein
....
....
und daher die ganze Konfigaration verteilt auf 5 SFR mit ein paar 
Dutzend Bits "händisch" zu machen ist.
Darum der Link auf DS70183 - da gibt es auch Beispiele dafür.

von Peter D. (peda)


Lesenswert?

Martin schrieb:
> Mir
> geht es aber darum zu lernen wie man den ADC vom dsPIC33FJ anwendet.

In dem Fall würde ich einfach mal das Datenblatt lesen, Abschnitt:
22.0 10-BIT/12-BIT ANALOG-TO-DIGITAL CONVERTER (ADC)

Und wenn das nicht reicht, dem Link darin folgen zum “dsPIC33F/PIC24H 
Family Reference Manual”.

Ist natürlich erheblich mehr Lese- und Lernstoff als beim popeligen 
ATtiny13.

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.