ik heb hier thuis een projectje met een mountainbike omgebouwd met een 1Kw elektromotor staan.
Hierop is ook een BB-sensor tranzx ingebouwd. Nu zou ik logging willen verwezenlijken.
Hiervoor leek mij arduino zeer geschikt omdat ik op de controller 5V voedingspanning ter beschikking heb.
Daarmee heb ik een arduino uno aangekocht en een sd shield van sparkfun.com.
Nu zou ik graag een logging doen van de spanning ( batterij 48V) en de stroom ( Via 30A Stroomsensor ACS712-30 mit Analogausgang) samen met de omtreksnelheid ( via een soort pulsenteller ) en de koppelsensor (0-5 V signaal) van de BB-sensor kunnen de vermogens van de motor en de fietser vergeleken worden. Althans dit is de bedoeling.
Nu is dit de eerste keer dat ik met arduino werk en kan totaal niet aan de programmeertaal uit.
iemand met tips of dergelijk voor me op gang te helpen? Op de site van sparkfun en arduino staat precies ook verschillende soorten code wat ik nog verwarrender vind.
Dag Ben
Welkom op et neerlandstalige gedeelte van het arduino forum.
Wat je omschrijft als project lijkt me best haalbaar maar je zal toch wel de programmeer taal baas moeten kunnen worden.
Het beste is om de voorbeeldprogrammatjes die bij de arduino IE zitten te doorworstelen.
Doorworstelen daar bedoel ik mee dat je ze compileerd oplaadt probeerd te begrijpen en je begrijpen bewijst door de code aan te passen en dan te krijgen wat je denkt dat het ging zijn.
1 grote opgepast. De voorbeeld programmatjes hebben de bedoeling van een leereffect en zijn dus niet geschrijven om "bij elkaar te smijten" en het werkt. Het standaard voorbeeld is het gebruik van delay. Dus voor je stukjes samen neemt kijk zeker eens naar blink without delay.
praktisch voor de spanning van 48V te meten gebruik je een spanningsdeler en als code vertrek je van AnalogReadSerial
Voor de DC meeting een tweede AnalogReadSerial nodig maar kijk eens naar ReadAnalogVoltage
Ik vindt niet zomaar een voorbeeldje voor een pulsenteller maar er zijn er vast wel.
En dan voor de koppelsensor weer een Analog read.
Hoe staat het met je school opdracht die hier wel erg veel overeenkomsten mee heeft ?
Je hebt geprobeerd die thread te wissen, maar omdat ik daar al geantwoord had was dat niet mogelijk (je kunt geen berichten van iemand anders bewerken of wissen).
Wat jij wellicht nog niet had meegekregen, is dat ik van dit soort acties pissig word.
Want ik (zoals anderen dat ook doen) heb mijn best gedaan je een net, passend en voldoende uitgebreid antwoord te geven op je vraag.
Daarbij heb ik je er op gewezen dat je je schoolopdracht zelf zal moeten maken en niet moet denken dat het een goed idee is om dat door anderen te laten doen of een kant en klare oplossing van het internet te plukken.
Schijnbaar beviel je dat antwoord niet en was je van mening dat op deze manier te moeten oplossen.
Je leraar of professor is ook niet dom (vandaar diens mogelijke titel) en heeft daarom ook een opdracht bedacht die je dwingt er zelf aan te werken.
Ik ben redelijk goed in het onthouden van wat ik allemaal tegenkom op het internet, en jouw actie in de andere thread triggert mij om na nu alles waar ik eventueel nog eens een antwoord aan jou op zou gaan geven voor zover ik dat na nu nog nuttig acht, voorafgegaan zal worden door een quote van je eerdere berichten.
Veel succes om dat te wissen.
Zoals je ziet heeft Jantje je een vergelijkbaar antwoord gegeven als ik eerder deed; je moet het werk gewoon zelf doen.
je vroeg mij vorige keer om meer details die ik er nu heb bijgezet ik vraag niet om een kant en klare oplossing,
zoals jantje nu zegt gebruik bv een analog read kan ik opzoeken wat dit juist is en doet.
dit is geen standaard huiswerk ofzo ik zit in een opdracht met een probleem en heb zelf gekozen om met arduino te werken. ik volg geen IT gerelateerde richting dus ken niets van programmeertalen alsook de begeleider niet. daardoor dat ik een kleine oproep deed. dit was zeker niet om een kant en klare oplossing te verkrijgen. daar kan ik programmateurs voor betalen ook.
ik heb intresse in het gebruik van arduino nu ik verschillende mogelijkheden gezien heb maar kan nog niet aan de programmeertaal uit. mijn excuses als het een standaard schoolopdracht bleek maar dit is het zeker niet.
Waar het mij om gaat is dat je dit zonder problemen in je originele onderwerp had kunnen doen.
Als je dat had gedaan had je dezelfde adviezen gehad als nu, waarschijnlijk ook van jantje (want die was eerder aanwezig).
Maar in plaats daarvan heb je besloten mijn vragen en adviezen in de wind te slaan, en een nieuw onderwerp gestart en gepoogd de oude thread te verwijderen.
Dat verwijderen is niet gelukt, maar daardoor is de thread nu wel verstoord en de tijd en aandacht die ik aan jou besteed heb totaal onzinnig gebleken.
Daarom brand ik mijn vingers niet weer aan je, en zal je verder ook niet meer proberen te helpen.
Blijven er nog heel veel anderen over die je wel kunnen helpen.
Veel succes verder met je project(en), nu weer on topic.
momenteel ben ik wat aan het testen en heb met de gekregen hulp volgend programmaatje geschreven,
#include <SD.h>
const int chipSelect = 4;
volatile int apulsen = 0;
void setup()
{
// Open serial communications and wait for port to open:
Serial.begin(9600);
while (!Serial) {
; // wait for serial port to connect. Needed for Leonardo only
}
Serial.print("Initializing SD card...");
// make sure that the default chip select pin is set to
// output, even if you don't use it:
pinMode(10, OUTPUT);
pinMode(2, INPUT);
attachInterrupt(0,TelOp,RISING);
// see if the card is present and can be initialized:
if (!SD.begin(chipSelect)) {
Serial.println("Card failed, or not present");
// don't do anything more:
return;
}
Serial.println("card initialized.");
}
void loop()
{
// make a string for assembling the data to log:
String dataString = String(millis());
dataString += ",";
// read three sensors and append to the string:
// spanning, stroom, koppel
// snelheid via pulsenteller
for (int analogPin = 0; analogPin < 3; analogPin++) {
int sensor = analogRead(analogPin);
dataString += String(sensor);
//if (analogPin < 2) {
dataString += ",";
//}
}
dataString+= String(apulsen);
Serial.println(dataString);
/*
// open the file. note that only one file can be open at a time,
// so you have to close this one before opening another.
File dataFile = SD.open("datalog.txt", FILE_WRITE);
// if the file is available, write to it:
if (dataFile) {
dataFile.println(dataString);
dataFile.close();
// print to the serial port too:
Serial.println(dataString);
}
// if the file isn't open, pop up an error:
else {
Serial.println("error opening datalog.txt");
}*/
}
void TelOp()
{
apulsen++;
}
met de monitor zie ik nu dat er soms wat veel pulsen geteld worden, ligt dit aan de code ??
iemand een idee
BenBug:
met de monitor zie ik nu dat er soms wat veel pulsen geteld worden, ligt dit aan de code ??
iemand een idee
Neen. En waarom?
Je probleem is niet goed omschreven! Hoeveel pulsen verwacht je? waarom verwacht je er zoveel? Hoeveel krijg je er? waarom zeg je soms? Zijn er soms pieken of is het altijd teveel?
We zijn techneuten geen gedachten lezers, waarzeggers of orakels.
ik heb getest met een bewegingssensor als je in de nabijheid komt telt hij ineens een 100-tal pulsen bij voorgaande waarde
ik verwacht dus 1 enkele puls normaal wordt er effectief x-aantal pulsen gegeven per omwenteling bij de snelheidssensor
maar de bewegingssensor zelf geeft ook maar 1 aan maar de teller telt direct teveel (+/- 100tal)
het is sowieso teveel sorry voor de info die te weinig was
42 is het universele antwoord op vragen waarvan de steller de betekenis niet begrijpt en komt uit de film "The hitchhiker's guide to the galaxy". Zeker een aanrader als je hem nog niet gezien hebt.