Problem mit aref
hab schon wieder ein problem mit dem spannung messen.
aref zeigt immer 1v -2 an wenn andere sensoren ausgelesen werden deswegen kann ich die spannung des akkus nicht richtig berechnen nur aref spannung messen funktioniert aber in kombination nicht mehr .
es wehre sehr nett wenn mir ihr bei meinem software problem helfen könntet.
wenn ich mit dem multimeter aref pin messe zeigt er aber 4,5v nur wenn ich in auslese dann funktioniert es nicht immer.
hier der code
aref zeigt immer 1v -2 an wenn andere sensoren ausgelesen werden deswegen kann ich die spannung des akkus nicht richtig berechnen nur aref spannung messen funktioniert aber in kombination nicht mehr .
es wehre sehr nett wenn mir ihr bei meinem software problem helfen könntet.
wenn ich mit dem multimeter aref pin messe zeigt er aber 4,5v nur wenn ich in auslese dann funktioniert es nicht immer.
code: [select]
reference = analogread(14);
arduino_vin = (1.1/reference)*1023;
serial.println("arduino voltage:");
serial.println(arduino_vin);
hier der code
code: [select]
// simple demo feeding random data pachube.
// 2011-07-08 <jc@wippler.nl> http://opensource.org/licenses/mit-license.php
// handle returning code , reset ethernet module if needed
// 2013-10-22 hneiraf@gmail.com
int reference;
float arduino_vin;
#include <ethercard.h>
// change these settings match own setup
// ethernet interface mac address, must unique on lan
static byte mymac[] = { 0x74,0x69,0x69,0x2d,0x30,0x31 };
const char website[] progmem = "api.xively.com";
byte ethernet::buffer[350];
uint32_t timer;
stash stash;
byte session;
//timing variable
int res = 0;
float vout = 0.0;
float vin = 0.0;
float value = 0;
int result = 0;
float r1 = 10150.0;
float r2 = 4720.0;
float average;
void setup () {
serial.begin(9600);
serial.println("\n[xively example]");
//initialize ethernet
initialize_ethernet();
}
void loop () {
//if correct answer not received re-initialize ethernet module
if (res > 220){
initialize_ethernet();
}
res = res + 1;
ether.packetloop(ether.packetreceive());
//200 res = 10 seconds (50ms each res)
if (res == 200) {
//generate random info
reference = analogread(14);
arduino_vin = (1.1/reference)*1023;
serial.println("arduino voltage:");
serial.println(arduino_vin);
// acs712t
average = 0;
for(int = 0; < 1000; i++) {
average = average + (0.048875855327468 * analogread(a4) -25) / 1000;
delay(1);
}
//spannung dess akkus messen
value = analogread(a5);
vout = (value * arduino_vin) / 1024.0; // see text
vin = vout / (r2/(r1+r2));
if (vin<0.09) {
vin=0.0;//statement quash undesired reading !
}
// generate 2 fake values payload - using separate stash,
// can determine size of generated message ahead of time
byte sd = stash.create();
stash.print("verbrauch,");
stash.println(average);
stash.print("akku,");
stash.println(vin);
stash.save();
//display data sent
serial.println(average);
res = 220;
// generate header payload - note stash size used,
// , "stash descriptor" passed in argument using "$h"
stash::prepare(pstr("put http://$f/v2/feeds/$f.csv http/1.0" "\r\n"
"host: $f" "\r\n"
"x-pachubeapikey: $f" "\r\n"
"content-length: $d" "\r\n"
"\r\n"
"$h"),
website, pstr(feed), website, pstr(apikey), stash.size(), sd);
// send packet - releases stash buffers once done
session = ether.tcpsend();
}
const char* reply = ether.tcpreply(session);
if (reply != 0) {
res = 0;
serial.println(reply);
}
delay(50);
}
void initialize_ethernet(void){
for(;;){ // keep trying until succeed
//reinitialize ethernet module
pinmode(5, output);
serial.println("reseting ethernet...");
digitalwrite(5, low);
delay(1000);
digitalwrite(5, high);
delay(500);
if (ether.begin(sizeof ethernet::buffer, mymac) == 0){
serial.println( "failed access ethernet controller");
continue;
}
if (!ether.dhcpsetup()){
serial.println("dhcp failed");
continue;
}
ether.printip("ip: ", ether.myip);
ether.printip("gw: ", ether.gwip);
ether.printip("dns: ", ether.dnsip);
if (!ether.dnslookup(website))
serial.println("dns failed");
ether.printip("srv: ", ether.hisip);
//reset init value
res = 0;
break;
}
}
code: [select]
reference = analogread(14);
arduino_vin = (1.1/reference)*1023;
serial.println("arduino voltage:");
serial.println(arduino_vin);
ich verstehe den sinn dieses kodeschnippsels nicht.
du rechnest als hättest du die interne 1,1v referenz aktiviert hast sie aber de fakto nicht.
http://arduino.cc/en/reference/analogreference
grüße uwe
Arduino Forum > International > Deutsch (Moderator: uwefed) > Problem mit aref
arduino
Comments
Post a Comment