 |

|
Elektronika.lt portalo forumas
Jūs esate neprisijungęs lankytojas. Norint dalyvauti diskusijose, būtina užsiregistruoti ir prisijungti prie forumo.
Prisijungę galėsite kurti naujas temas, atsakyti į kitų užduotus klausimus, balsuoti forumo apklausose.
Administracija pasilieka teisę pašalinti pasisakymus bei dalyvius,
kurie nesilaiko forumo taisyklių.
Pastebėjus nusižengimus, prašome pranešti.
Dabar yra 2025 03 12, 12:19. Visos datos yra GMT + 2 valandos.
|
|
|
 |
Forumas » Mikrovaldikliai » Arduino multi loggeris
|
Jūs negalite rašyti naujų pranešimų į šį forumą Jūs negalite atsakinėti į pranešimus šiame forume Jūs negalite redaguoti savo pranešimų šiame forume Jūs negalite ištrinti savo pranešimų šiame forume Jūs negalite dalyvauti apklausose šiame forume
|
|
|
Puslapis 1 iš 2 Pereiti prie 1, 2 Toliau |
|
 |
 |
 |
Arduino multi loggeris |
Parašytas: 2013 01 19, 14:34 |
|
|
|
Sveiki,
Vienam projektėliui konstruoju loggerį kuris man turi matuoti keturias temperatūras, dvi srtoves, ir dvi apsukas. Aišku aš pats visko nuo nulio nedarau, kiek reikia kažka kode pasikeitinėju ir persidarau.
Pirmiausia susiradau loginimo į SD kortelę projektėlį, pakūriau temperetūrų loginimą, tada išmėginau matuoti apsukas su infraraudonųjų spindulių diodu ir fotodiodu, na dėl srovės matavimo ten viskas aišku.
Problema yra tokia, kad užkrovus į arduino programą kuri turi matuoti apsukas, viskas yra gerai, tačiau sukombinavus viską į vieną kodą, apsukų parodymai yra nelogiški.
Gal tarp čia esančių yra kas nusimano ir gali patarti kur ieškoti bėdos?
Čia tachometro šaltinis:
http://arduinoprojects101.com/arduino-rpm-counter-tachometer/
Čia mano kodo miksas:
#include <SD.h>
float tempC;
//Temperaturos davikliai
int tempPin0 = 0;
int tempPin1 = 1;
int tempPin2 = 2;
int tempPin3 = 3;
//Sroves davikliai
int currentPin4 = 4;
int currentPin5 = 5;
//SD logerio kontaktas
int CS_pin = 10;
//Tachometru kontaktai
int ledPin13 = 6; //!!!!!!!!!!!!!!!!atstatyti pavadinimus
int ledPin12 = 5;
//Tachometro kintamieji
volatile byte rpmcount;
unsigned int rpm;
unsigned long timeold;
void rpm_fun()
{
rpmcount++;
}
void setup()
{
Serial.begin(9600);
Serial.println("Kortele ruosiama");
pinMode(CS_pin, OUTPUT);
if(!SD.begin(CS_pin))
{
Serial.println("Korteles klaida");
return;
}
Serial.println("Kortele pagatava");
//Tachometro stuff'as
attachInterrupt(0, rpm_fun, FALLING);
pinMode(ledPin13, OUTPUT);
digitalWrite(ledPin13, HIGH);
rpmcount = 0;
rpm = 0;
timeold = 0;
}
void loop()
{
//Analoginio signalo piremimas
long sensor0 = analogRead(tempPin0);
long sensor1 = analogRead(tempPin1);
long sensor2 = analogRead(tempPin2);
long sensor3 = analogRead(tempPin3);
long sensor4 = analogRead(currentPin4);
long sensor5 = analogRead(currentPin5);
//Signalo perskaiciavimas
sensor0 = (5.0 * sensor0 * 100.0)/1024.0;
sensor1 = (5.0 * sensor1 * 100.0)/1024.0;
sensor2 = (5.0 * sensor2 * 100.0)/1024.0;
sensor3 = (5.0 * sensor3 * 100.0)/1024.0;
sensor4 = (5.0 * sensor4 * 100.0)/1024.0;
sensor5 = (5.0 * sensor5 * 100.0)/1024.0;
//Tacho stuff'as
detachInterrupt(0);
rpm = 30*1000/(millis() - timeold)*rpmcount;
timeold = millis();
rpmcount = 0;
//Rezultatu isvedimas
String sn0 = ":";
String sn1 = "Temp.kb.reg:";
String sn2 = "Temp.db.mot:";
String sn3 = "Temp.db.reg:";
String sn4 = "Srove.kb:";
String sn5 = "Srove.db:";
String sn6 = "RPM.kb:";
String sn7 = "RPM.db:";
String string0 = sensor0;
String string1 = sensor1;
String string2 = sensor2;
String string3 = sensor3;
String string4 = sensor4;
String string5 = sensor5;
String stringRPMkb = rpm;
String stringTOP = sn0 + string0 + sn0 + string1 + sn0 + string2 + sn0 + string3 + sn0 + string4 + sn0 + string5 + sn0 + stringRPMkb;
File dataFile = SD.open("log.txt", FILE_WRITE);
if(dataFile)
{
dataFile.println(stringTOP);
dataFile.close();
Serial.println(stringTOP);
}
else
{
Serial.println("Failas nepasiekiamas");
}
attachInterrupt(0, rpm_fun, FALLING);
delay(1000);
} |
|
|
|
|
 |
 |
Arduino multi loggeris |
Parašytas: 2013 01 19, 15:08 |
|
|
|
timeold = millis();
reikia talpinti betarpiskai pries attachInterrupt(0, rpm_fun, FALLING);
ir nepamirsk, kad sitie irgi turi eiti vienas paskui kita
detachInterrupt(0);
rpm = 30*1000/(millis() - timeold)*rpmcount;
kitu klaidu nezejau
ai, dar - tavo formule remiasi tuo, kad tarp matavimu praeis 1000ms, o tu tame tarpe temperaturas nuskaitineji...
teisinga butu:
rpmcount=0;
timeold = millis();
attachInterrupt(0, rpm_fun, FALLING);
delay(1000);
detachInterrupt(0);
rpm = 30*1000/(millis() - timeold)*rpmcount;
// toliau tavo likes kodas |
|
|
|
|
 |
Arduino multi loggeris |
Parašytas: 2013 01 20, 13:02 |
|
|
|
iejimo grandineje kas, ka rodo oscilografas visame apsuku diapazone? |
|
|
|
|
 |
Arduino multi loggeris |
Parašytas: 2013 01 20, 18:44 |
|
|
|
Na, oscilografu nesinaudoju. Kaip jau minėjau pakeitus kodą kuriame vien tiktai apsukų matavimas, tai apsukas rodo gerai. |
|
|
|
|
 |
 |
Re: Arduino multi loggeris |
Parašytas: 2013 01 20, 19:12 |
|
|
|
evaldasnar rašo: |
Sveiki,
Vienam projektėliui konstruoju loggerį kuris man turi matuoti keturias temperatūras, dvi srtoves, ir dvi apsukas. Aišku aš pats visko nuo nulio nedarau, kiek reikia kažka kode pasikeitinėju ir persidarau.
Pirmiausia susiradau loginimo į SD kortelę projektėlį, pakūriau temperetūrų loginimą, tada išmėginau matuoti apsukas su infraraudonųjų spindulių diodu ir fotodiodu, na dėl srovės matavimo ten viskas aišku.
Problema yra tokia, kad užkrovus į arduino programą kuri turi matuoti apsukas, viskas yra gerai, tačiau sukombinavus viską į vieną kodą, apsukų parodymai yra nelogiški.
Gal tarp čia esančių yra kas nusimano ir gali patarti kur ieškoti bėdos?
Čia tachometro šaltinis:
http://arduinoprojects101.com/arduino-rpm-counter-tachometer/
Čia mano kodo miksas:
#include <SD.h>
float tempC;
//Temperaturos davikliai
int tempPin0 = 0;
int tempPin1 = 1;
int tempPin2 = 2;
int tempPin3 = 3;
//Sroves davikliai
int currentPin4 = 4;
int currentPin5 = 5;
//SD logerio kontaktas
int CS_pin = 10;
//Tachometru kontaktai
int ledPin13 = 6; //!!!!!!!!!!!!!!!!atstatyti pavadinimus
int ledPin12 = 5;
//Tachometro kintamieji
volatile byte rpmcount;
unsigned int rpm;
unsigned long timeold;
|
pabandik situos pazimeti
int tempPin0 = 0;
int tempPin1 = 1;
int tempPin2 = 2;
int tempPin3 = 3;
taip:
int tempPin0 = A0;
int tempPin1 = A1;
int tempPin2 = A2;
int tempPin3 = A3;
nes kiek suprantu tachometras naudoja skaitmenini signala 2.
o analoginiai zimisi A0,A1,A2
o skaitmeniniai 0,1,2,3
tai tikriausiai 2 skaitmeninis prisikiria prie temppin2. |
|
|
|
|
 |
 |
Arduino multi loggeris |
Parašytas: 2013 01 20, 20:33 |
|
|
|
Cia duemilanove ploskte, tai ten is eiles visi zymisi ir tiek. |
|
|
|
|
 |
Arduino multi loggeris |
Parašytas: 2013 01 20, 20:57 |
|
|
|
evaldasnar rašo: |
Cia duemilanove ploskte, tai ten is eiles visi zymisi ir tiek. |
Konkreciau atasakymas butu toks: jei Arduino analoginio nuskaitymo funkcijai paduodame 0 tai Arduino interpretuoja, kad turite omenyje A0, jei 1 - A1 ir t.t. Skaitmeniniu atveju butu naudojami visai kiti kanalai. Vyckiukas variantai irgi galimi tik A0, A1 ir t.t. reiktu aprasyti kaip #define, nes int kintamajam kazkokio A0 nepriduosi (nekompiliuos net.)
Va visai kitas varantas kain norime analoginius kanalus naudoti kaip skaitmeninius. Tuomet A0 reikia laikyti 14, A1 - 15 ir t.t. |
|
|
|
|
 |
 |
Re: Arduino multi loggeris |
Parašytas: 2013 01 20, 21:07 |
|
|
|
evaldasnar rašo: |
//Rezultatu isvedimas
String sn0 = ":";
String sn1 = "Temp.kb.reg:";
String sn2 = "Temp.db.mot:";
String sn3 = "Temp.db.reg:";
String sn4 = "Srove.kb:";
String sn5 = "Srove.db:";
String sn6 = "RPM.kb:";
String sn7 = "RPM.db:";
String string0 = sensor0;
String string1 = sensor1;
String string2 = sensor2;
String string3 = sensor3;
String string4 = sensor4;
String string5 = sensor5;
String stringRPMkb = rpm;
String stringTOP = sn0 + string0 + sn0 + string1 + sn0 + string2 + sn0 + string3 + sn0 + string4 + sn0 + string5 + sn0 + stringRPMkb;
|
Tai aisku gali ir nepadeti bet labai jau daug RAM tu cia su tais stringais pavartoji. Neimanoma butu kazkaip apsisukti su += ar concat operacijomis? |
|
|
|
|
 |
 |
Arduino multi loggeris |
Parašytas: 2013 01 20, 21:27 |
|
|
|
mindogas rašo: |
evaldasnar rašo: |
Cia duemilanove ploskte, tai ten is eiles visi zymisi ir tiek. |
Konkreciau atasakymas butu toks: jei Arduino analoginio nuskaitymo funkcijai paduodame 0 tai Arduino interpretuoja, kad turite omenyje A0, jei 1 - A1 ir t.t. Skaitmeniniu atveju butu naudojami visai kiti kanalai. Vyckiukas variantai irgi galimi tik A0, A1 ir t.t. reiktu aprasyti kaip #define, nes int kintamajam kazkokio A0 nepriduosi (nekompiliuos net.)
Va visai kitas varantas kain norime analoginius kanalus naudoti kaip skaitmeninius. Tuomet A0 reikia laikyti 14, A1 - 15 ir t.t. |
nereikia kliedeti A0...A5 yra ne kintamieji, o konstantos. Analoginius iejimus laisvai galima naudoti kaip diskretinius iejimus/isejimus, tik adresuojasi jie ne 0..13, o A0..A5. |
|
|
|
|
 |
 |
Re: Arduino multi loggeris |
Parašytas: 2013 01 20, 21:29 |
|
|
|
mindogas rašo: |
evaldasnar rašo: |
//Rezultatu isvedimas
String sn0 = ":";
String sn1 = "Temp.kb.reg:";
String sn2 = "Temp.db.mot:";
String sn3 = "Temp.db.reg:";
String sn4 = "Srove.kb:";
String sn5 = "Srove.db:";
String sn6 = "RPM.kb:";
String sn7 = "RPM.db:";
String string0 = sensor0;
String string1 = sensor1;
String string2 = sensor2;
String string3 = sensor3;
String string4 = sensor4;
String string5 = sensor5;
String stringRPMkb = rpm;
String stringTOP = sn0 + string0 + sn0 + string1 + sn0 + string2 + sn0 + string3 + sn0 + string4 + sn0 + string5 + sn0 + stringRPMkb;
|
Tai aisku gali ir nepadeti bet labai jau daug RAM tu cia su tais stringais pavartoji. Neimanoma butu kazkaip apsisukti su += ar concat operacijomis? |
galiam apseiti keletu write(), paskutini writeln() |
|
|
|
|
 |
 |
Arduino multi loggeris |
Parašytas: 2013 01 20, 21:32 |
|
|
|
Del tu stringu tai jau pastebejau, su jais ten net nespedavo normaliai rezultatu per seriala isvedineti, tai tenkinuosi dvitaskiu tarp duomenu, reikes tik pratrinti dar ta rasliava visa.
Na meginsiu su tais A0.. |
|
|
|
|
 |
Arduino multi loggeris |
Parašytas: 2013 01 20, 21:58 |
|
|
|
evaldasnar rašo: |
Del tu stringu tai jau pastebejau, su jais ten net nespedavo normaliai rezultatu per seriala isvedineti, tai tenkinuosi dvitaskiu tarp duomenu, reikes tik pratrinti dar ta rasliava visa.
Na meginsiu su tais A0.. |
Serial.flush() |
|
|
|
|
 |
Arduino multi loggeris |
Parašytas: 2013 01 21, 06:51 |
|
|
|
AlgisL rašo: |
nereikia kliedeti A0...A5 yra ne kintamieji, o konstantos. Analoginius iejimus laisvai galima naudoti kaip diskretinius iejimus/isejimus, tik adresuojasi jie ne 0..13, o A0..A5. |
O kur tu matei kliedesius? Tiesiog kaip kam patinka taip tas ir naudoja, nes visais atvejais veikia gerai. Ar tu padarysi digitalWrite i A0 ar i 14 vistiek bus nukreipiama i ta pati adresa. |
|
|
|
|
 |
 |
Arduino multi loggeris |
Parašytas: 2013 01 21, 06:56 |
|
|
|
mindogas rašo: |
AlgisL rašo: |
nereikia kliedeti A0...A5 yra ne kintamieji, o konstantos. Analoginius iejimus laisvai galima naudoti kaip diskretinius iejimus/isejimus, tik adresuojasi jie ne 0..13, o A0..A5. |
O kur tu matei kliedesius? Tiesiog kaip kam patinka taip tas ir naudoja, nes visais atvejais veikia gerai. Ar tu padarysi digitalWrite i A0 ar i 14 vistiek bus nukreipiama i ta pati adresa. |
A0=14 cia tik 28 koju Arduino, o jei 100koju? arba Due variantas? kas tada?
NE NUO LUBU yra A0..A5 konstantos, o tam, kad skirtinguose Arduino variantuose gautum butent analoginiu iejimu adresa. |
|
|
|
|
|
 |
Google paieška forume |
|
 |
Naujos temos forume |
|
 |
FS25 Tractors
Farming Simulator 25 Mods,
FS25 Maps,
FS25 Trucks |
 |
ETS2 Mods
ETS2 Trucks,
ETS2 Bus,
Euro Truck Simulator 2 Mods
|
 |
FS22 Tractors
Farming Simulator 22 Mods,
FS22 Maps,
FS25 Mods |
 |
VAT calculator
VAT number check,
What is VAT,
How much is VAT |
 |
LEGO
Mänguköök,
mudelautod,
nukuvanker |
 |
KCD2 Mods
Installing KCD 2 Mods,
KCD 2 Guides,
KCD 2 Cheats |
 |
FS25 Mods
FS25 Harvesters,
FS25 Tractors Mods,
FS25 Maps Mods |
 |
Dantų protezavimas
All on 4 implantai,
Endodontija mikroskopu,
Dantų implantacija |
 |
FS25 Mods
FS25 Maps,
FS25 Cheats,
FS25 Install Mods |
 |
GTA 6 Wiki
GTA 6 Map,
GTA 6 Characters,
GTA 6 News |
 |
FS25 Mods
Farming Simulator 25 Mods,
FS25 Maps |
 |
ATS Trailers
American Truck Simulator Mods,
ATS Trucks,
ATS Maps |
|

|
 |