zelf mijn canbus shield bouwen en programmeren.
11 berichten
• Pagina 1 van 2 • 1, 2
zelf mijn canbus shield bouwen en programmeren.
Hallo,
dit is mijn eerste bericht op het forum.
ik ben monteur van landbouw machines en volg de opleiding diagnose monteur nivo4.
ik ben met een project op school bezig voor een start stop systeem in te bouwen op een trekker.
mijn ervaring met arduino, ben bezig geweest met de arduino starters kit en heb er al een stuk of 5 gemaakt. (low level)
ik heb veel speurwerk gedaan naar hoe can bus systeem in de mobielevoertuigen werkt. en ben op twee specefieke ic uit gekomen MCP2515 CAN Bus controller ic en MCP2551 CAN transceiver ic.
nou zijn er kant en klare CAN-BUS shield te krijgen. echter heb ik ervoor gekozen zelf deze ic los te gebruiken.
ik heb alles dubbel besteld voor als er een ic of zo niet zou werken.
(let niet op de aangesloten leds, op de foto zitten er nog geen weerstanden tussen.)
ik heb de gemaakte aansluiting nog niet getest. (heeft nog geen usb voeding gehad.)
het gebruikte aansluit schema heb ik van :
dit ziet er allemaal al goed uit vindt ik zelf
ik heb allen ergens mijn twijfels ik weet niet waarom er een 12v aansluiting vermeld staat, en met een PTC beveiligt.
als er tussen canHI en CanLO een spanning gemeten wordt zo als ik dat met mijn multimeter ook meet. of nee sorry voor mijn twijfel ik moet wel spanning op mijn can transceiver hebben voor can berichten op de bus te kunnen zetten. Alleen durf ik dat tot nu toe nog niet aan te sluiten. zit met deze beveiliging
ik heb de onderdelen niet en ik weet niet of ik wel 12v op MCP2551 CAN transceiver ic mag gebruiken? ( ik denk van niet. ik hoop dat ik juist heb beschreven waar mijn kennes een beetje daalt.)
verder heb ik een 0,1 UF condensator gebruikt bij de 8 pins IC. bij de 18 pins IC moet er ook nog een komen voor meer zekerheid.
het programmeren komt later. wel heb ik al een link gevonden voor sketch die het werkend moet krijgen. https://github.com/jasonporritt/NewCanbus ik snap alleen nog niet waar zijn de aansluit pennen vermeld in deze sketches?, geen input en output vindtbaar wel weet ik dat er bij sommige #include het codering uit een library komt al is me dit nog een beetje onduidelijk.
kunnen jullie mij verder helpen? ik heb een beetje steun nodig voor weer zelfstandig aan de gang te kunnen.
Met vriendelijke groet, Gerard.
dit is mijn eerste bericht op het forum.
ik ben monteur van landbouw machines en volg de opleiding diagnose monteur nivo4.
ik ben met een project op school bezig voor een start stop systeem in te bouwen op een trekker.
mijn ervaring met arduino, ben bezig geweest met de arduino starters kit en heb er al een stuk of 5 gemaakt. (low level)
ik heb veel speurwerk gedaan naar hoe can bus systeem in de mobielevoertuigen werkt. en ben op twee specefieke ic uit gekomen MCP2515 CAN Bus controller ic en MCP2551 CAN transceiver ic.
nou zijn er kant en klare CAN-BUS shield te krijgen. echter heb ik ervoor gekozen zelf deze ic los te gebruiken.
ik heb alles dubbel besteld voor als er een ic of zo niet zou werken.
(let niet op de aangesloten leds, op de foto zitten er nog geen weerstanden tussen.)
ik heb de gemaakte aansluiting nog niet getest. (heeft nog geen usb voeding gehad.)
het gebruikte aansluit schema heb ik van :
dit ziet er allemaal al goed uit vindt ik zelf
ik heb allen ergens mijn twijfels ik weet niet waarom er een 12v aansluiting vermeld staat, en met een PTC beveiligt.
als er tussen canHI en CanLO een spanning gemeten wordt zo als ik dat met mijn multimeter ook meet. of nee sorry voor mijn twijfel ik moet wel spanning op mijn can transceiver hebben voor can berichten op de bus te kunnen zetten. Alleen durf ik dat tot nu toe nog niet aan te sluiten. zit met deze beveiliging
ik heb de onderdelen niet en ik weet niet of ik wel 12v op MCP2551 CAN transceiver ic mag gebruiken? ( ik denk van niet. ik hoop dat ik juist heb beschreven waar mijn kennes een beetje daalt.)
verder heb ik een 0,1 UF condensator gebruikt bij de 8 pins IC. bij de 18 pins IC moet er ook nog een komen voor meer zekerheid.
het programmeren komt later. wel heb ik al een link gevonden voor sketch die het werkend moet krijgen. https://github.com/jasonporritt/NewCanbus ik snap alleen nog niet waar zijn de aansluit pennen vermeld in deze sketches?, geen input en output vindtbaar wel weet ik dat er bij sommige #include het codering uit een library komt al is me dit nog een beetje onduidelijk.
kunnen jullie mij verder helpen? ik heb een beetje steun nodig voor weer zelfstandig aan de gang te kunnen.
Met vriendelijke groet, Gerard.
Advertisement
Re: zelf mijn canbus shield bouwen en programmeren.
het ziet er goed uit hoor.
zit allemaal goed in elkaar.
persoonlijk zou ik een 7805 gebruiken, en dus de 5v voeding op je arduino nietgebruiken, want er kan nogal wat spanning 16 V is geen uitzondering.
die kun je veel beter koelen.
zit allemaal goed in elkaar.
persoonlijk zou ik een 7805 gebruiken, en dus de 5v voeding op je arduino nietgebruiken, want er kan nogal wat spanning 16 V is geen uitzondering.
die kun je veel beter koelen.
paul deelen
shooter@home.nl
shooter@home.nl
Re: zelf mijn canbus shield bouwen en programmeren.
Shooter bedankt de 7805 heb ik gekocht en is zeker een betere oplossing dan die PTC.
ik heb via dit forum ook fritzing ontdekt. ik ben even niet meer verder gegaan met het canbus shield.
even iets invoudigers dat ik eerst wil ontdekken is, hoe kan ik een inductive toerental sensor (twee polig) van de motor. recht streeks aansluiten en lezen met mijn arduino uno?
ik heb via dit forum ook fritzing ontdekt. ik ben even niet meer verder gegaan met het canbus shield.
even iets invoudigers dat ik eerst wil ontdekken is, hoe kan ik een inductive toerental sensor (twee polig) van de motor. recht streeks aansluiten en lezen met mijn arduino uno?
Re: zelf mijn canbus shield bouwen en programmeren.
Ik heb deze proto gemaakt gister maar op een of andere manier werkt het niet. had aan een kant de toerental sensor met op 12v aangeloten en een weerstant er tussen van 560 ohm. en aan de anderekant van de optocoupler de transistor schakeling door gestuurd naar de uno.
Deze wil ik nog uit proberen deze week.
Mijn vorige proto kreeg ik geen toerental op de computer te zien in serial. is deze code dan wel goed?
Ik heb gemeten bij 1000 rpm: 830 Hz (scoop gemeten) en ik heb er 46 tandjes op de krukas schijf zitten.
zo volgens onze berekening klopt het als ik 830x60=49800 en dat delen door 46 tandjes= 1082 rpm.
ik heb de aantal tandjes per omwenteling van de krukas, zo beschreven in de code: if (rpmcount >= 46)
Als iemand weet of er aanpassingen nodig zijn in de code laat het mij weten. ik ga hem zelf zo snel mogelijk testen.
mvg gerard.
Deze wil ik nog uit proberen deze week.
- Code: Alles selecteren
volatile byte rpmcount;
int ledPin = 13;
int railey = 10;
unsigned int rpm;
unsigned long timeold;
// toeren tal waar bij het railey in of uit schakkelt.
const float baselineToeren = 900;
void setup() {
Serial.begin(9600);
digitalWrite(2, HIGH);
pinMode(ledPin, OUTPUT);
attachInterrupt(0, rpm_fun, RISING);
rpmcount = 0;
rpm = 0;
timeold = 0;
}
void loop() {
if (rpmcount >= 46) {
//Update RPM every 5 counts, increase this for better RPM resolution,
//decrease for faster update
rpm = 60*1000/(millis() - timeold)*rpmcount;
timeold = millis();
rpmcount = 0;
Serial.println(rpm,DEC);
}
}
void rpm_fun()
{
rpmcount++;
//Each rotation, this interrupt function is run twice
digitalWrite(ledPin, HIGH);
delay(10);
digitalWrite(ledPin, LOW);
{
if (rpm < baselineToeren) {
digitalWrite(railey, LOW);
} // als toerental lager is dan 900 railey uit.
else if (rpm >= baselineToeren) {
digitalWrite(railey, HIGH);
} // als toerental hoger is dan 900 ..
delay(1);
}
}
Mijn vorige proto kreeg ik geen toerental op de computer te zien in serial. is deze code dan wel goed?
Ik heb gemeten bij 1000 rpm: 830 Hz (scoop gemeten) en ik heb er 46 tandjes op de krukas schijf zitten.
zo volgens onze berekening klopt het als ik 830x60=49800 en dat delen door 46 tandjes= 1082 rpm.
ik heb de aantal tandjes per omwenteling van de krukas, zo beschreven in de code: if (rpmcount >= 46)
Als iemand weet of er aanpassingen nodig zijn in de code laat het mij weten. ik ga hem zelf zo snel mogelijk testen.
mvg gerard.
Re: zelf mijn canbus shield bouwen en programmeren.
zet in de interupt alleen maar rpmcount++ en verder niets.
als de motor 1 keer rond is dus rpm>=46 dan moet je alleen maar 46 aftrekken en niet 0 maken.
waar je dat doet maakt niet uit.
in de loop een timer zetten die elke seconde naar de serial print, anders loopt dat over.
(en houd de processor op)
als de motor 1 keer rond is dus rpm>=46 dan moet je alleen maar 46 aftrekken en niet 0 maken.
waar je dat doet maakt niet uit.
in de loop een timer zetten die elke seconde naar de serial print, anders loopt dat over.
(en houd de processor op)
paul deelen
shooter@home.nl
shooter@home.nl
Re: zelf mijn canbus shield bouwen en programmeren.
hallo,
het is mij gelukt om een toerental te meten, alleen is de berekening nog niet juist (erg hoge waarde). en erg veel schommeling in de frequentie of rpm berekenende toerental.
ik heb me nog eens in verdiept waar de schommeling aan van de toeren aan kan liggen en dat is dat ik een lange tand op de krukas heb zitten. (deze is voor de krukaspositie naar de ECU)
en ik heb in de code staan.
als ik deze nou inplaats van 5 naar 50 in stel is nog niet veel verbeterd. misschien moet ik het nog meer verhogen?
de motor draait met 1000 toeren al lukt het me niet om de 46 tandjes om te rekenen naar een juist toerental verhouding
ik dacht al voor eens te proberen om de tijd anders te bereken door in plaats 60x1000.. 60:46 tandjes.
rpm = 1,3043*1000/(millis() - timeold)*rpmcount;
als ik de originele code lees was dat rpm = 30*1000/(millis() - timeold)*rpmcount; ... hier staat nummer 30 voor een halve minut en is dus een halve omwenteling denk ik?
het is mij gelukt om een toerental te meten, alleen is de berekening nog niet juist (erg hoge waarde). en erg veel schommeling in de frequentie of rpm berekenende toerental.
ik heb me nog eens in verdiept waar de schommeling aan van de toeren aan kan liggen en dat is dat ik een lange tand op de krukas heb zitten. (deze is voor de krukaspositie naar de ECU)
en ik heb in de code staan.
- Code: Alles selecteren
if (rpmcount>= 5) {
//Update RPM every 5 counts, increase this for better RPM resolution,
//decrease for faster update
als ik deze nou inplaats van 5 naar 50 in stel is nog niet veel verbeterd. misschien moet ik het nog meer verhogen?
de motor draait met 1000 toeren al lukt het me niet om de 46 tandjes om te rekenen naar een juist toerental verhouding
ik dacht al voor eens te proberen om de tijd anders te bereken door in plaats 60x1000.. 60:46 tandjes.
rpm = 1,3043*1000/(millis() - timeold)*rpmcount;
als ik de originele code lees was dat rpm = 30*1000/(millis() - timeold)*rpmcount; ... hier staat nummer 30 voor een halve minut en is dus een halve omwenteling denk ik?
Re: zelf mijn canbus shield bouwen en programmeren.
Hoi, weer een tijdje geleden dat ik met dit project begonnen ben maar het gaat wel altijd in kleine stapjes vooruit.
Ik heb de bereken (1,3043) in de sketch gezet en nog eens proef gedraaid. Kwam alleen 0 uit. Als ik de sketch de berekening x10 deed had ik 1 uit op mijn serial monitor.
Ik heb zo nog van alles geprobeerd maar ben hier dus niet veel verder mee gekomen helaas.
Een collega had een PLC (siemens logo 12v). dat wou bij het begin ook niet lukken ( de inductieve sensor was op een analoge aansluiting aan geklemd en dat werkt logies niet.
Ik heb een diode brug gemaakt.
Nu werkt het het wel en zo ingesteld als er minder dan 6v dc op staat dat dan de plc een uitgang in schakelt en boven de 6,2v dc de uitgang uit schakelt. dus uit eindelijk best simpel.
Alleen nu wil ik dit graag met de arduino dit zelfde doen. de sketch maken zal me zelf wel lukken met misschien een beetje hulp maar ik heb nu een ander probleem. Hoe kan ik de spanning van de sensor aanpassen, wat de spanning is stationair al meer dan 5v en max 16v, nu is dit een stroom met weinig ampère. Maar toch kan dit mijn arduino dit vast niet aan.
ook mag de computer van de trekker dit niet merken dat ik de Arduino tussen de ECU en de sensor bouw.
Ik heb eens een klein schema gezien met een transistor maar weet niet meer hoe dat werkte. Ik wou dat ik dat nog eens kon vinden.
gerard schreef:de motor draait met 1000 toeren al lukt het me niet om de 46 tandjes om te rekenen naar een juist toerental verhouding
ik dacht al voor eens te proberen om de tijd anders te bereken door in plaats 60x1000.. 60:46 tandjes.
rpm = 1,3043*1000/(millis() - timeold)*rpmcount;
Als ik de originele code lees was dat rpm = 30*1000/(millis() - timeold)*rpmcount; ... hier staat nummer 30 voor een halve minut en is dus een halve omwenteling denk ik?
Ik heb de bereken (1,3043) in de sketch gezet en nog eens proef gedraaid. Kwam alleen 0 uit. Als ik de sketch de berekening x10 deed had ik 1 uit op mijn serial monitor.
Ik heb zo nog van alles geprobeerd maar ben hier dus niet veel verder mee gekomen helaas.
Een collega had een PLC (siemens logo 12v). dat wou bij het begin ook niet lukken ( de inductieve sensor was op een analoge aansluiting aan geklemd en dat werkt logies niet.
Ik heb een diode brug gemaakt.
Nu werkt het het wel en zo ingesteld als er minder dan 6v dc op staat dat dan de plc een uitgang in schakelt en boven de 6,2v dc de uitgang uit schakelt. dus uit eindelijk best simpel.
Alleen nu wil ik dit graag met de arduino dit zelfde doen. de sketch maken zal me zelf wel lukken met misschien een beetje hulp maar ik heb nu een ander probleem. Hoe kan ik de spanning van de sensor aanpassen, wat de spanning is stationair al meer dan 5v en max 16v, nu is dit een stroom met weinig ampère. Maar toch kan dit mijn arduino dit vast niet aan.
ook mag de computer van de trekker dit niet merken dat ik de Arduino tussen de ECU en de sensor bouw.
Ik heb eens een klein schema gezien met een transistor maar weet niet meer hoe dat werkte. Ik wou dat ik dat nog eens kon vinden.
Re: zelf mijn canbus shield bouwen en programmeren.
delay weghalen zeker in de interupt.
830 Hz is 1 milliseconden.
830 Hz is 1 milliseconden.
paul deelen
shooter@home.nl
shooter@home.nl
Re: zelf mijn canbus shield bouwen en programmeren.
Met belangstelling gelezen, enkele opmerkingen.
Er van uitgaande dat u zich baseerde op het Sparkfun CAN-Bus shield.
- Op pin 9 van de DB-9 CAN-Bus connector wordt de 12 Volt batterijspanning van het voertuig aangeboden. Wat u een PTC beveiliging noemt is eigenlijk een overstroom of kortsluitbeveiliging.
Het is geen PTC maar een PPTC, een polyfuse. Mocht er een te grote stroom worden afgenomen door het shield en/of de Arduino dan onderbreekt deze polyfuse de stroomkring maar hersteld
weer zodra de stroomsterkte aanvaardbaar is. Zodoende pleeg je geen aanslag op de voertuigspanning
- De Schottky diode en kleine elco zorgen voor extra afvlakking, lees: onderdrukken van eventuele spikes op de 12V.
- Deze 12V gaat naar Vin van de Arduino. Vin mag maximaal 20V bedragen dus 16V kan hij zeker behappen. De shield krijgt zijn 5V van de Arduino. De schakeling met aparte 7805 is niet per sé nodig.
- De 2551 heeft aan 5V voldoende en kan maximaal 7V hebben volgens de specs.
Als ik het goed begrijp hangt aan de AC zijde van de bruggelijkrichter de inductieve sensor en bekom je 5 tot 16 Volt aan de DC zijde?
Je kan hierachter een weerstandsdeler plaatsen. Bijvoorbeeld een 10K (aan plus van de brug) en 3K9 (aan gnd) in serie. Bij 6 Volt staat er op het knooppunt dan iets van een 1,7 Volt. Bij 16 Volt is dat ongeveer 4,5 Volt.
Deze spanning kan je aan een analoge pin van de Arduino hangen (bv. A0) en inlezen.
Er van uitgaande dat u zich baseerde op het Sparkfun CAN-Bus shield.
- Op pin 9 van de DB-9 CAN-Bus connector wordt de 12 Volt batterijspanning van het voertuig aangeboden. Wat u een PTC beveiliging noemt is eigenlijk een overstroom of kortsluitbeveiliging.
Het is geen PTC maar een PPTC, een polyfuse. Mocht er een te grote stroom worden afgenomen door het shield en/of de Arduino dan onderbreekt deze polyfuse de stroomkring maar hersteld
weer zodra de stroomsterkte aanvaardbaar is. Zodoende pleeg je geen aanslag op de voertuigspanning
- De Schottky diode en kleine elco zorgen voor extra afvlakking, lees: onderdrukken van eventuele spikes op de 12V.
- Deze 12V gaat naar Vin van de Arduino. Vin mag maximaal 20V bedragen dus 16V kan hij zeker behappen. De shield krijgt zijn 5V van de Arduino. De schakeling met aparte 7805 is niet per sé nodig.
- De 2551 heeft aan 5V voldoende en kan maximaal 7V hebben volgens de specs.
Als ik het goed begrijp hangt aan de AC zijde van de bruggelijkrichter de inductieve sensor en bekom je 5 tot 16 Volt aan de DC zijde?
Je kan hierachter een weerstandsdeler plaatsen. Bijvoorbeeld een 10K (aan plus van de brug) en 3K9 (aan gnd) in serie. Bij 6 Volt staat er op het knooppunt dan iets van een 1,7 Volt. Bij 16 Volt is dat ongeveer 4,5 Volt.
Deze spanning kan je aan een analoge pin van de Arduino hangen (bv. A0) en inlezen.
Arduinows!
Why do computer programmers confuse Halloween with Christmas? Because Oct 31 = Dec 25
I got 01100011 problems but a bit ain't 00000001
Why do computer programmers confuse Halloween with Christmas? Because Oct 31 = Dec 25
I got 01100011 problems but a bit ain't 00000001
Re: zelf mijn canbus shield bouwen en programmeren.
shooter schreef:delay weghalen zeker in de interupt.
830 Hz is 1 milliseconden.
Bedankt shooter, maar ik ben er niet meer mee bezig omdat ik heb er nog geen goede verhalen van gevonden op het internet er is niemand die het voor elkaar gekregen heeft om meer dan twee signalen per omw te meten. het is dus nog een hele uitdaging. wel heb ik op deze manier veel geleerd en zelf probeert.
Rudi schreef:Met belangstelling gelezen, enkele opmerkingen.
Er van uitgaande dat u zich baseerde op het Sparkfun CAN-Bus shield.
- Op pin 9 van de DB-9 CAN-Bus connector wordt de 12 Volt batterijspanning van het voertuig aangeboden. Wat u een PTC beveiliging noemt is eigenlijk een overstroom of kortsluitbeveiliging.
Het is geen PTC maar een PPTC, een polyfuse. Mocht er een te grote stroom worden afgenomen door het shield en/of de Arduino dan onderbreekt deze polyfuse de stroomkring maar hersteld
weer zodra de stroomsterkte aanvaardbaar is. Zodoende pleeg je geen aanslag op de voertuigspanning
- De Schottky diode en kleine elco zorgen voor extra afvlakking, lees: onderdrukken van eventuele spikes op de 12V.
- Deze 12V gaat naar Vin van de Arduino. Vin mag maximaal 20V bedragen dus 16V kan hij zeker behappen. De shield krijgt zijn 5V van de Arduino. De schakeling met aparte 7805 is niet per sé nodig.
- De 2551 heeft aan 5V voldoende en kan maximaal 7V hebben volgens de specs.
Als ik het goed begrijp hangt aan de AC zijde van de bruggelijkrichter de inductieve sensor en bekom je 5 tot 16 Volt aan de DC zijde?
Je kan hierachter een weerstandsdeler plaatsen. Bijvoorbeeld een 10K (aan plus van de brug) en 3K9 (aan gnd) in serie. Bij 6 Volt staat er op het knooppunt dan iets van een 1,7 Volt. Bij 16 Volt is dat ongeveer 4,5 Volt.
Deze spanning kan je aan een analoge pin van de Arduino hangen (bv. A0) en inlezen.
Mij maak je blij met goede raad en advies
Het is mij wel helder, ik kan verder niet veel verkeerd doen met 12v of 14v voertuigspanning.
de beveiliging maak ik er wel op als ik iets permanent opbouw op een machine. ( ook voor piekspanningen en verkeerd om aansluiten is deze beveiliging nodig! )
Even verder over inductieve toerental sensor.
Afbeelding als voorbeeld:
voorbeeld link: http://www.tiepie-automotive.com/nl/Measurement_examples/Sensors/Crankshaft_Sensor_Inductive
Ik heb wel de twijfel eerlijk gezegd heb ik niet getest hoe hoog de spanning is bij 2400 motor toeren. Hoe bereken je de weerstanden? Ik kan de serie en parallel wel bereken. 10k ohm weerstand kun je dus altijd gebruiken en de 4.7k ohm weerstand kun je gemakkelijk uitreken?
klein voorbeeld van de juiste aansluiting:
Maar nu helemaal ontopic
Ik ben verder gegaan met mijn canbus shield. ik heb hem getest met sparkfun codes.
alles oké. dat gaat goed
Nu ben ik hem gaan testen op mijn audi a3 8p 2004. ISO 15765 CAN.. SAE-J2284 OBD2 stekker maar ben heel bekend met auto,s
Ik repareer can storingen en zo maar voor te testen wil ik niet mijn auto uitgraven voor direct toegang te krijgen op de can bus.
Ik heb me pinnetjes gemaakt voor in OBD2 stekker ( peperclip aan een draadje gesoldeerd met een krimpkoos er over heen )
Allen laat de computer mij er niet in. ik meet namelijk geen berichten over de canbus can+ en can- zijn beide gelijk 2,7v op de OBD stekker.
ik heb een mogelijke oplossing maar ik weet het niet zeker. kan ik met twee 100 ohm weerstanden wel toegang krijgen via de OBD stekker?
voorbeeld zie foto in link: http://pinoutsguide.com/CarElectronics/obd-2_universal_cable.shtml
ik heb het vermoedden dat ik geblokkeerd wordt. ik denk bijna zeker te weten dat ik hier geen afsluit weerstand bij nodig heb van 120 ohm al twijfel ik er wel over.
11 berichten
• Pagina 1 van 2 • 1, 2
Terug naar Gezamenlijke projecten
Wie is er online?
Gebruikers in dit forum: Geen geregistreerde gebruikers en 1 gast