Elektronika.lt
 2025 m. kovo 12 d. Projektas | Reklama | Žinokite | Klausimai | Prisidėkite | Atsiliepimai | Kontaktai
Paieška portale
EN Facebook RSS

 Kas naujo  Katalogas  Parduotuvės  Forumas  Tinklaraščiai
 Pirmas puslapisSąrašas
 Forumas / + pokalbiai
 - Paieška forume
 - D.U.K. / Forumo taisyklės
 - Narių sąrašas
 - Registruotis
 - Prisijungti

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 12
Pereiti prie 1, 2  Toliau
Pradėti naują temą  Atsakyti į pranešimą Rodyti ankstesnį pranešimą :: Rodyti kitą pranešimą 
 Arduino multi loggeris
PranešimasParašytas: 2013 01 19, 14:34 Pranešti apie taisyklių pažeidimą Atsakyti su citata
evaldasnar
Naujokas
Naujokas
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
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
PranešimasParašytas: 2013 01 19, 15:08 Pranešti apie taisyklių pažeidimą Atsakyti su citata
AlgisL
Senbuvis
Senbuvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
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
PranešimasParašytas: 2013 01 20, 12:56 Pranešti apie taisyklių pažeidimą Atsakyti su citata
evaldasnar
Naujokas
Naujokas
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
nepadeda :/
 Arduino multi loggeris
PranešimasParašytas: 2013 01 20, 13:02 Pranešti apie taisyklių pažeidimą Atsakyti su citata
AlgisL
Senbuvis
Senbuvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
iejimo grandineje kas, ka rodo oscilografas visame apsuku diapazone?
 Arduino multi loggeris
PranešimasParašytas: 2013 01 20, 18:44 Pranešti apie taisyklių pažeidimą Atsakyti su citata
evaldasnar
Naujokas
Naujokas
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
Na, oscilografu nesinaudoju. Kaip jau minėjau pakeitus kodą kuriame vien tiktai apsukų matavimas, tai apsukas rodo gerai.
 Re: Arduino multi loggeris
PranešimasParašytas: 2013 01 20, 19:12 Pranešti apie taisyklių pažeidimą Atsakyti su citata
vyckiukas
Užkietėjęs dalyvis
Užkietėjęs dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
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
PranešimasParašytas: 2013 01 20, 20:33 Pranešti apie taisyklių pažeidimą Atsakyti su citata
evaldasnar
Naujokas
Naujokas
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
Cia duemilanove ploskte, tai ten is eiles visi zymisi ir tiek.
 Arduino multi loggeris
PranešimasParašytas: 2013 01 20, 20:57 Pranešti apie taisyklių pažeidimą Atsakyti su citata
mindogas
Dažnas dalyvis
Dažnas dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą Apsilankyti vartotojo tinklapyje
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
PranešimasParašytas: 2013 01 20, 21:07 Pranešti apie taisyklių pažeidimą Atsakyti su citata
mindogas
Dažnas dalyvis
Dažnas dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą Apsilankyti vartotojo tinklapyje
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
PranešimasParašytas: 2013 01 20, 21:27 Pranešti apie taisyklių pažeidimą Atsakyti su citata
AlgisL
Senbuvis
Senbuvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
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
PranešimasParašytas: 2013 01 20, 21:29 Pranešti apie taisyklių pažeidimą Atsakyti su citata
AlgisL
Senbuvis
Senbuvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
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
PranešimasParašytas: 2013 01 20, 21:32 Pranešti apie taisyklių pažeidimą Atsakyti su citata
evaldasnar
Naujokas
Naujokas
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
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
PranešimasParašytas: 2013 01 20, 21:58 Pranešti apie taisyklių pažeidimą Atsakyti su citata
AlgisL
Senbuvis
Senbuvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
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
PranešimasParašytas: 2013 01 21, 06:51 Pranešti apie taisyklių pažeidimą Atsakyti su citata
mindogas
Dažnas dalyvis
Dažnas dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą Apsilankyti vartotojo tinklapyje
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
PranešimasParašytas: 2013 01 21, 06:56 Pranešti apie taisyklių pažeidimą Atsakyti su citata
AlgisL
Senbuvis
Senbuvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
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.
Pradėti naują temą  Atsakyti į pranešimą Pereiti prie 1, 2  Toliau
 
Forumo sistema: phpBB
 „Google“ paieška forume
 Kas naujesnio?
 Naujos temos forume

Global electronic components distributor – Allicdata Electronics

Electronic component supply – „Eurodis Electronics“

LOKMITA – įvairi matavimo, testavimo, analizės ir litavimo produkcija

Full feature custom PCB prototype service

Sveiki ir ekologiški maisto produktai

Mokslo festivalis „Erdvėlaivis Žemė

LTV.LT - lietuviškų tinklalapių vitrina

„Konstanta 42“

„Mokslo sriuba“

www.matuok.lt - Interneto spartos matavimo sistema

www.esaugumas.lt – apsaugok savo kompiuterį!

PriedaiMobiliems.lt – telefonų priedai ir aksesuarai

Draugiškas internetas

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
Reklama
‡ 1999– © Elektronika.lt | Autoriaus teisės | Privatumo politika | Atsakomybės ribojimas | Turinys | Reklama | Kontaktai LTV.LT - lietuviškų tinklalapių vitrina
Script hook v, Openiv, Menyoo
gta5mod.net
FS25 Mods, FS25 Tractors, FS25 Maps
fs25mods.lt
Optical filters, UV optics, electro optical crystals
www.eksmaoptics.com
LTV.LT – lietuviškų tinklalapių vitrina
www.ltv.lt/technologijos/
Elektroninių parduotuvių optimizavimas „Google“ paieškos sistemai
www.seospiders.lt
FS22 mods, Farming simulator 22 mods,
FS22 maps

fs22.com
Reklama


Reklama