INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Pro Mini ADC Kanal 8 lesen
28.12.2015, 17:06
Beitrag #1
Pro Mini ADC Kanal 8 lesen
Hallo zusammen,
...ich steh grad ein bischen auf dem Schlauch ...weil...
...wenn ich analogRead(ADC_Kanal-8) aufrufe setzt mir die IDE den ADC Kanal auf Kanal 0 zurück weil ja Hardwaremäßig ja nur Kanal 0 bis 7 vorhanden ist. ABER, in der CPU kann man auf Kanal 8 einen internen Temperatursensor abfragen. Auf einer früheren IDE habe ich das mal von Kanal 5 auf Kanal 7 aufgebohrt als ich einen Nano verwendet hatte. Nur im Moment finde ich die zugehörige Lib nicht wo bei der IDE 1.6.5 diese Kanalbegrenzung erfolgt. Vielleicht kennt einer von euch das Problem und kann mir sagen wo ich da dran drehen muß....sonst muß ich den ganzen ADC Vorgang zu Fuß schreiben.
lgbk

1+1 = 10 Angel ...und ich bin hier nicht der Suchmaschinen-Ersatz Dodgy...nur mal so als genereller Tipp..
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
28.12.2015, 22:31
Beitrag #2
RE: Pro Mini ADC Kanal 8 lesen
Hallo,

(28.12.2015 17:06)Bitklopfer schrieb:  ...wenn ich analogRead(ADC_Kanal-8) aufrufe setzt mir die IDE den ADC Kanal auf Kanal 0 zurück weil ja Hardwaremäßig ja nur Kanal 0 bis 7 vorhanden ist. ABER, in der CPU kann man auf Kanal 8 einen internen Temperatursensor abfragen. Auf einer früheren IDE habe ich das mal von Kanal 5 auf Kanal 7 aufgebohrt als ich einen Nano verwendet hatte. Nur im Moment finde ich die zugehörige Lib nicht wo bei der IDE 1.6.5 diese Kanalbegrenzung erfolgt. Vielleicht kennt einer von euch das Problem und kann mir sagen wo ich da dran drehen muß....sonst muß ich den ganzen ADC Vorgang zu Fuß schreiben.
lgbk

schau Dir mal wiring_analog.c in ..\Arduino\hardware\arduino\avr\cores\arduino\ an, da könnte der Fehler liegen:

// set the analog reference (high two bits of ADMUX) and select the
// channel (low 4 bits). this also sets ADLAR (left-adjust result)
// to 0 (the default).
#if defined(ADMUX)
ADMUX = (analog_reference << 6) | (pin & 0x07);
#endif

das sollte da wohl eher | (pin & 0x0F); heißen.

Gruß aus Berlin
Michael
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
28.12.2015, 23:06
Beitrag #3
RE: Pro Mini ADC Kanal 8 lesen
(28.12.2015 22:31)amithlon schrieb:  Hallo,

(28.12.2015 17:06)Bitklopfer schrieb:  ...wenn ich analogRead(ADC_Kanal-8) aufrufe setzt mir die IDE den ADC Kanal auf Kanal 0 zurück weil ja Hardwaremäßig ja nur Kanal 0 bis 7 vorhanden ist. ABER, in der CPU kann man auf Kanal 8 einen internen Temperatursensor abfragen. Auf einer früheren IDE habe ich das mal von Kanal 5 auf Kanal 7 aufgebohrt als ich einen Nano verwendet hatte. Nur im Moment finde ich die zugehörige Lib nicht wo bei der IDE 1.6.5 diese Kanalbegrenzung erfolgt. Vielleicht kennt einer von euch das Problem und kann mir sagen wo ich da dran drehen muß....sonst muß ich den ganzen ADC Vorgang zu Fuß schreiben.
lgbk

schau Dir mal wiring_analog.c in ..\Arduino\hardware\arduino\avr\cores\arduino\ an, da könnte der Fehler liegen:

// set the analog reference (high two bits of ADMUX) and select the
// channel (low 4 bits). this also sets ADLAR (left-adjust result)
// to 0 (the default).
#if defined(ADMUX)
ADMUX = (analog_reference << 6) | (pin & 0x07);
#endif

das sollte da wohl eher | (pin & 0x0F); heißen.

Gruß aus Berlin
Michael

Hallo zurück,
gerade wollte ich es posten das in der wiring_analog.c in diesen Zeilen wohl der Hund begraben ist:
Code:
#if defined(ADMUX)
    ADMUX = (analog_reference << 6) | (pin & 0x0F);  <== hier schon mit der Änderung
#endif
...und du hast ins Schwarze getroffen....so geht es...so kann man den Temperatursensor als auch die interne Bandgap Reference von 1,1V auslesen.
Andererseits habe ich auch in anderen Definitionsdateien an den nach ADC verdächtigen Parametern gedreht....aber das was du auch gefunden hast sieht schon schwer nach der richtigen Zeile aus.....bei dem Beispiel wo ich es früher mal gemacht hatte war es auch nur eine Maske wo ich ändern mußte...soviel weis ich noch.
Allerdings wundere ich mich noch über die hohe Temperatur wo da nun angezeigt wird die ich mit folgendem Code berechne:

Code:
//##### Temperaturmessung
chiptemp = analogRead(8);     // CPU Temp lesen
Serial.println(ADMUX, BIN);
Serial.println(chiptemp);

chipv = 1.1 * chiptemp / 1024.0;

Serial.println(chipv);
chipt = (((chipv - 0.314) * (1000.0)) / 66 *60) +25.0;  // Berechnung Temp
Serial.print("Chip Temperatur  ");
Serial.println(chipt);
Hier kommen Temperaturen von +/- 70 Grad raus...im Moment liegt die CPU im Gefrierschrank um mal eine Temperatur unter Null zu sehen.
Das /66 * 60 ist ein Korrekturfaktor den ich aus dem Atmel Datenblatt herausgelesen habe... 0.314 Volt sind da 25Grad und 0.380 Volt sind 85 Grad....daraus ergibt sich jene Korrektur.
Dumm ist gerade nur das ich keine stabile 5V Versorgung für den Pro Mini habe auf dem das gerade läuft...und wenn ich die 1,1V Referenc mit der USB Versorgung nachprüfe dann kommen unglaubliche 1,1V raus....aber jeder weis das die USB Versorgung nicht wirklich stabile 5V liefert um als Mess-Referenz wirklich dienen zu können....und in die Bastelbude rennen um ein Messgerät zu holen....Undecided

Sodele, nun habe ich noch schnell das Board aus der Arktis befreit und es sagt bei wohl sicheren Temperaturen unter 0 dann doch das es noch ...also erste Messung -12.4 Grad....5 Sekunden später waren es schon +10 Grad...schnell steigend....bis auf 66 Grad....zuletzt langsam steigend.
Naja...da stehts:
Zitat:The voltage sensitivity is approximately 1 mV/°C and the accuracy of the temperature measurement is +/- 10°C.

In diesem Sinne würde ich mal die Aufgabe als gelöst ansehen....war schon ne höllen Sucherei weil Win7 einfach zu blöd ist einer Datei ADMUX zu finden...XP war da besser....seufz...

Danke dir fürs mitsuchen...hoffe mal du mußtest nicht soviel Zeit aufwenden wie ich.
lgbk

1+1 = 10 Angel ...und ich bin hier nicht der Suchmaschinen-Ersatz Dodgy...nur mal so als genereller Tipp..
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
29.12.2015, 09:50
Beitrag #4
RE: Pro Mini ADC Kanal 8 lesen
Hallo,

(28.12.2015 17:06)Bitklopfer schrieb:  ...und du hast ins Schwarze getroffen....so geht es...so kann man den Temperatursensor als auch die interne Bandgap Reference von 1,1V auslesen.

In diesem Sinne würde ich mal die Aufgabe als gelöst ansehen....war schon ne höllen Sucherei weil Win7 einfach zu blöd ist einer Datei ADMUX zu finden...XP war da besser....seufz...

Danke dir fürs mitsuchen...hoffe mal du mußtest nicht soviel Zeit aufwenden wie ich.

meine "Suchzeit" ging, ich Suche im Moment aber mehr in den ESp8266-Sachen, da sind einige Details wirklich im ganzen Web verstreut...

Die interne Referenz hast Du eingestellt? Die 5V Betriebsspannung ist ziemlich egal dabei. Bei mir liegt seit mehreren Jahren ein Tiny45 mit RFM02 im Gefrierfach, war eigentlich nur ein Batterietest, nun hat er schon einige neue Batterien bekommen.

ADC ist auf interne Referenz, 125kHz Wandlertakt.
Normalerweise wäre dann bei 0 Grad die Ausgabe 273 (ist in Kelvin).
Korrektur ist bei mir -267 bei diesem Tiny, also Abweichung ca. 6 Grad.
Ich habe nur bei Raumtemperatur den Korrkturwert bestimmt, allerdings sind die Werte durchaus glaubwürdig, im Moment sind es -23 Grad. Liegt am Billig-Kühlschrank mit seiner "Abtauautomatik" und der primitiven Reglung...

Kannst ja mal reinschauen, wenn Du Lust hast:
http://www.avr.roehres-home.de/sensoren/index.html

Auf der Homepage liegt aber wohl nur der ASM-Kram, ich habe das später in C geschrieben und nie aktualisiert.

Gruß aus Berlin
Michael
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
29.12.2015, 14:10
Beitrag #5
RE: Pro Mini ADC Kanal 8 lesen
(29.12.2015 09:50)amithlon schrieb:  Hallo,

(28.12.2015 17:06)Bitklopfer schrieb:  ...und du hast ins Schwarze getroffen....so geht es...so kann man den Temperatursensor als auch die interne Bandgap Reference von 1,1V auslesen.

In diesem Sinne würde ich mal die Aufgabe als gelöst ansehen....war schon ne höllen Sucherei weil Win7 einfach zu blöd ist einer Datei ADMUX zu finden...XP war da besser....seufz...

Danke dir fürs mitsuchen...hoffe mal du mußtest nicht soviel Zeit aufwenden wie ich.

meine "Suchzeit" ging, ich Suche im Moment aber mehr in den ESp8266-Sachen, da sind einige Details wirklich im ganzen Web verstreut...

Die interne Referenz hast Du eingestellt? Die 5V Betriebsspannung ist ziemlich egal dabei. Bei mir liegt seit mehreren Jahren ein Tiny45 mit RFM02 im Gefrierfach, war eigentlich nur ein Batterietest, nun hat er schon einige neue Batterien bekommen.

ADC ist auf interne Referenz, 125kHz Wandlertakt.
Normalerweise wäre dann bei 0 Grad die Ausgabe 273 (ist in Kelvin).
Korrektur ist bei mir -267 bei diesem Tiny, also Abweichung ca. 6 Grad.
Ich habe nur bei Raumtemperatur den Korrkturwert bestimmt, allerdings sind die Werte durchaus glaubwürdig, im Moment sind es -23 Grad. Liegt am Billig-Kühlschrank mit seiner "Abtauautomatik" und der primitiven Reglung...

Kannst ja mal reinschauen, wenn Du Lust hast:
http://www.avr.roehres-home.de/sensoren/index.html

Auf der Homepage liegt aber wohl nur der ASM-Kram, ich habe das später in C geschrieben und nie aktualisiert.

Gruß aus Berlin
Michael

Hi,
na dann bin ich ja beruhigt wenn es im Rahmen blieb.
Mit diesen Funkmodulen habe ich mich bislang noch nicht auseinandergesetzt da ich hier alles per LAN oder WLAN abwickle. Wobei das auf Arduino Ebene auch noch in den Kinderschuhen steckt....sprich paar Experimente durchgeführt aber noch nichts für den Alltag installiert.

Ja klaro... INTERNAL... da kenn ich mich schon aus...habe in meinem Leben schon genügend ADC Konverter abgeglichen...bis aufs halbe Digit runter...mehr kannste beim Abgleich nicht rausholen.

Nun wenn man die interne Refernz verwendet ist VCC solange sie im Toleranzbereich liegt Zweitrangig. Aber wenn du die interne Referenz auf K14 nachmessen willst dann kannst das nur mach indem du eine externe Refernzspannung (EXTERNAL) anlegst oder die 5V VCC sauber stabilisierst weil die dann als Refernz herangezogen wird und somit voll in das Ergebnis eingeht. Eine Alternative wäre eine genau und bekannte Spannung kleiner der internen Referenz an einen Analogeingang anzulegen und sich dann auf die zu beziehen um die Spannung der internen Referenz zu errechnen.
Mal sehen mit welcher Methode ich das nun mache...
...hmm...interne Referenz verwenden...eine einstellbare Spannung an einem ADC Eingang messen und wenn der ADC Full Scale ausgibt ist die Messspannung = V-Ref...Idea

In Sachen Temperatur messen plane ich mal die Temperaturen im Erdboden bis in eine Tiefe von 3 Metern zu erfassen und die Sensoren an einen UNO Hat anschließen der auf einem RPi steckt der dann wieder per WLAN die Daten weiterreicht....die Komponenten sind weitesgehend schon da...warten auf zusammenbau...

lgbk

1+1 = 10 Angel ...und ich bin hier nicht der Suchmaschinen-Ersatz Dodgy...nur mal so als genereller Tipp..
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
29.12.2015, 15:03 (Dieser Beitrag wurde zuletzt bearbeitet: 29.12.2015 15:06 von amithlon.)
Beitrag #6
RE: Pro Mini ADC Kanal 8 lesen
(29.12.2015 14:10)Bitklopfer schrieb:  In Sachen Temperatur messen plane ich mal die Temperaturen im Erdboden bis in eine Tiefe von 3 Metern zu erfassen und die Sensoren an einen UNO Hat anschließen der auf einem RPi steckt der dann wieder per WLAN die Daten weiterreicht....die Komponenten sind weitesgehend schon da...warten auf zusammenbau...

Was hast Du für Sensoren geplant? Verarbeitest Du mit dem Uno bzw. dem Pi schon die Daten? Eigentlich wäre das doch was für den ESP8266, wenn er nur die Daten ins WLAN schaffen soll. 1-wire oder I2C o.ä. macht der auch gleich mit. Ich habe mal ein RFM-Nodul an den ESP8266 gehängt, meine alte C-Routine für den ESP compiliert und einen Mini-Webserver mit reingebaut. Der stellt nun im Moment zum Test die Daten meiner alten Sensoren als Webseite dar und langweilt sich vermutlich dabei ziemlich...

Ein paar Probleme macht mir im Moment, einen stabilen Multiplex-Interrupt hinzubekommen. Die Ticker-Lib hat bei irgendein Problem bei 1-2ms IRQ-Aufrufen.
Es werden 5 Stellen 7-Segment gemuxt, die Daten dahin gehen über einen MCP23S17 per Hardware-SPI des ESP8266. Uhrzeit wird ab- und zu per NTP geholt. Die WLAN-Sachen, die letztlich auf dem ESP8266 im Hintergrund laufen, machen manchmal komische Sachen und die Anzeige flackert dann leicht.

Das Schöne daran ist ja, daß es komplett aus der Ardiono-IDE zu prgrammieren geht und man einen großen Teil der Arduiono-Libs direkt oder mit wenigen Anpassungen nutzen kann.

Gruß aus Berlin
Michael
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
29.12.2015, 23:22
Beitrag #7
RE: Pro Mini ADC Kanal 8 lesen
(29.12.2015 15:03)amithlon schrieb:  ....
Was hast Du für Sensoren geplant? Verarbeitest Du mit dem Uno bzw. dem Pi schon die Daten? Eigentlich wäre das doch was für den ESP8266, wenn er nur die Daten ins WLAN schaffen soll. 1-wire oder I2C o.ä. macht der auch gleich mit. Ich habe mal ein RFM-Nodul an den ESP8266 gehängt, meine alte C-Routine für den ESP compiliert und einen Mini-Webserver mit reingebaut. Der stellt nun im Moment zum Test die Daten meiner alten Sensoren als Webseite dar und langweilt sich vermutlich dabei ziemlich...

Ein paar Probleme macht mir im Moment, einen stabilen Multiplex-Interrupt hinzubekommen. Die Ticker-Lib hat bei irgendein Problem bei 1-2ms IRQ-Aufrufen.
Es werden 5 Stellen 7-Segment gemuxt, die Daten dahin gehen über einen MCP23S17 per Hardware-SPI des ESP8266. Uhrzeit wird ab- und zu per NTP geholt. Die WLAN-Sachen, die letztlich auf dem ESP8266 im Hintergrund laufen, machen manchmal komische Sachen und die Anzeige flackert dann leicht.

Das Schöne daran ist ja, daß es komplett aus der Ardiono-IDE zu prgrammieren geht und man einen großen Teil der Arduiono-Libs direkt oder mit wenigen Anpassungen nutzen kann.

Gruß aus Berlin
Michael

...also geplant ist die Temperaturen mit DS18B20 Sensoren zu erfassen die doppelt ausgeführt so alle 0,5m an einem Kabelstrang angebracht und Wasserfest verschrumpft werden....dazu kommt dann noch ein PT1000 der fix in 2m Tiefe platziert wird. Der UNO-HAT soll dann die Erfassung übernehmen und die Daten an den Pi übergeben. Der wiederum kann dann auch mal die Datenbankübernehmen... die einzelnen Blöcke habe ich zum Teil schon aufgebaut gehabt...muß ich dann eben noch anpassen. Z.b. habe ich schon 20 DS18B20 in gleicher Umgebungstemperatur laufen lassen und die Werte samt Adressen aufgezeichnet...somit kann ich die Abweichungen der einzelnen Sensoren im Ergebnis mit einrechnen bzw. die Differenzen ausgleichen. Auch eine Datenbank auf dem Pi läuft schon. Und das Material ist auch schon weitgehends da.
Der ESP8266 wäre da für mich absolutes Neuland...
Die geplante Anordnung hat den Vorteil das ich auf dem Pi auch eine Arduino IDE laufen lassen kann um damit den UNO zu programmieren und zudem kann ich das Ganze vom Läpi im Haus (die Datenerfassungskiste soll in den Garten) per VNCviewer sehr bequem bedienen. Ein Sambaserver wird den Zugriff auf die Datenspeicher vom Pi ermöglichen, die Daten per MySQL Datenbank ablegen...und per PHP Script auf einer Webseite ausgeben....Teile davon laufen schon in der Minimalversion. Somit dürfte es nur noch eine Fleisaufgabe sein...vielleicht wird das auch erst im Ruhestand dann erledigt...ist ja nicht mehr allzu lange hin...

lgbk

1+1 = 10 Angel ...und ich bin hier nicht der Suchmaschinen-Ersatz Dodgy...nur mal so als genereller Tipp..
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
30.12.2015, 09:03 (Dieser Beitrag wurde zuletzt bearbeitet: 30.12.2015 09:04 von amithlon.)
Beitrag #8
RE: Pro Mini ADC Kanal 8 lesen
(29.12.2015 23:22)Bitklopfer schrieb:  ...also geplant ist die Temperaturen mit DS18B20 Sensoren zu erfassen die doppelt ausgeführt so alle 0,5m an einem Kabelstrang angebracht und Wasserfest verschrumpft werden....dazu kommt dann noch ein PT1000 der fix in 2m Tiefe platziert wird. Der UNO-HAT soll dann die Erfassung übernehmen und die Daten an den Pi übergeben. Der wiederum kann dann auch mal die Datenbankübernehmen... die einzelnen Blöcke habe ich zum Teil schon aufgebaut gehabt...muß ich dann eben noch anpassen. Z.b. habe ich schon 20 DS18B20 in gleicher Umgebungstemperatur laufen lassen und die Werte samt Adressen aufgezeichnet...somit kann ich die Abweichungen der einzelnen Sensoren im Ergebnis mit einrechnen bzw. die Differenzen ausgleichen. Auch eine Datenbank auf dem Pi läuft schon. Und das Material ist auch schon weitgehends da.

ok, das passt dann schon so. Ich hatte auf dem Pi auch etliche Zeit Webserver mit MySQL usw. laufen und habe meine Sensordaten eingesammelt. Mein Problem war da eher, daß ich für mich keine wirkliche Verwendung dafür hatte.
Der Reiz damals war mehr, die RFM und den gazen Kram zum Spielen zu bekommen. Irgendwann ist dann die SD-Card im Pi verreckt...

(29.12.2015 23:22)Bitklopfer schrieb:  Der ESP8266 wäre da für mich absolutes Neuland...

Der würde da wohl auch nicht ausreichen. Käme bei Deiner Größenordnung auch bei mir vermutlich nur als WLAN-Modul am Arduino in Frage.

Könnte in Deinem Konzept evtl. für andere Einzelsensoren interessant werden, wenn Du noch andere Sachen räumlich getrennt erfassen willst. Sensor direkt am ESP8266 und per WLAN zu Deinem Pi, der ESP8266 könnte die Daten auch direkt in die Datenbank schreiben.

(29.12.2015 23:22)Bitklopfer schrieb:  Die geplante Anordnung hat den Vorteil das ich auf dem Pi auch eine Arduino IDE laufen lassen kann um damit den UNO zu programmieren und zudem kann ich das Ganze vom Läpi im Haus (die Datenerfassungskiste soll in den Garten) per VNCviewer sehr bequem bedienen.

Wie hängt der UNO am Pi? Über USB? Dann würde ich vermutlich lieber auf dem Laptop programmieren und den UNO von dort programmieren. Ist ja letztlich nur eine Bridge, die die Daten aus einer virtuellen COM auf dem Laptop per TCP zum Pi schickt und der tütet sie wieder in eine COM zum USB. Gibt es sicher alles schon fertig irgendwo. Der Pi kann eine ganze Menge, aber ein Rechenwunder ist er trotzdem nicht.

Gruß aus Berlin
Michael
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Programme vom UNO auf nano , mini Pro portieren Probleme anwo 19 1.171 17.04.2016 21:12
Letzter Beitrag: hotsystems
  Ins eeprom schreiben/lesen anwo 10 1.782 07.02.2016 20:05
Letzter Beitrag: rpt007
  Arduino Uno R3 und Pro Mini- Programmierschwierigkeiten Raptor 5 1.084 11.10.2015 15:53
Letzter Beitrag: hotsystems
  Anfänger: Code für "Mini-Alarmanlage" drugX 13 2.224 11.08.2015 16:00
Letzter Beitrag: torsten_156
  Variablen Typ double, char, long aus ext. EEPROM lesen SternGucker 8 1.529 02.04.2015 08:10
Letzter Beitrag: SternGucker
  Arduino Pro mini borafora 4 995 01.04.2015 13:40
Letzter Beitrag: borafora
  Daten von File auf SD Card (formatiert) schreiben+lesen u.a.m. HaWe 19 3.646 16.02.2015 19:50
Letzter Beitrag: HaWe
  Serielle Schnittstelle lesen - merkwürdiges Problem Waishon 6 1.768 16.12.2014 08:47
Letzter Beitrag: Corvus
  Flash: schnelles Speichern und Lesen "großer" 1-2-dim Arrays und Structures? HaWe 37 5.293 30.11.2014 18:40
Letzter Beitrag: HaWe
  Lesen des seriellen Datenstroms scritch 0 1.100 25.10.2014 23:28
Letzter Beitrag: scritch

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste