zelf mijn canbus shield bouwen en programmeren.

Als U een gezamenlijk project wil starten of aan projecten van anderen mee wilt werken.
Gebruikers-avatar
Berichten: 7
Geregistreerd: 13 Okt 2015, 18:42

zelf mijn canbus shield bouwen en programmeren.

Berichtdoor gerard » 13 Okt 2015, 20:52

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.

IMG_0854 kopie1.jpeg
can bus proto shield
IMG_0854 kopie1.jpeg (165.75 KiB) 13350 keer bekeken

(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 : Afbeelding

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
Schermafbeelding 2015-10-13 om 20.14.33.png
PTC beveiliging?
Schermafbeelding 2015-10-13 om 20.14.33.png (174.84 KiB) 13350 keer bekeken


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

Berichten: 4064
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: zelf mijn canbus shield bouwen en programmeren.

Berichtdoor shooter » 13 Okt 2015, 21:36

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.
paul deelen
shooter@home.nl

Gebruikers-avatar
Berichten: 7
Geregistreerd: 13 Okt 2015, 18:42

Re: zelf mijn canbus shield bouwen en programmeren.

Berichtdoor gerard » 27 Okt 2015, 01:18

Shooter bedankt :) de 7805 heb ik gekocht en is zeker een betere oplossing dan die PTC.
circuit_diagram_protected_voltage_regulation_with_7805.gif
7805
circuit_diagram_protected_voltage_regulation_with_7805.gif (2.93 KiB) 13328 keer bekeken

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?

Gebruikers-avatar
Berichten: 7
Geregistreerd: 13 Okt 2015, 18:42

Re: zelf mijn canbus shield bouwen en programmeren.

Berichtdoor gerard » 27 Okt 2015, 01:50

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.
IMG_0907.JPG
getest met optocoupler
IMG_0907.JPG (85.4 KiB) 13327 keer bekeken


Deze wil ik nog uit proberen deze week.

Schermafbeelding 2015-10-27 om 00.07.09.png
fritzing snel voorbeeld.
Schermafbeelding 2015-10-27 om 00.07.09.png (126.11 KiB) 13327 keer bekeken


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.

Berichten: 4064
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: zelf mijn canbus shield bouwen en programmeren.

Berichtdoor shooter » 27 Okt 2015, 14:15

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)
paul deelen
shooter@home.nl

Gebruikers-avatar
Berichten: 7
Geregistreerd: 13 Okt 2015, 18:42

Re: zelf mijn canbus shield bouwen en programmeren.

Berichtdoor gerard » 01 Nov 2015, 18:15

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.
Schermafbeelding 2015-10-30 om 12.05.54.png
screenshot
Schermafbeelding 2015-10-30 om 12.05.54.png (24.07 KiB) 13190 keer bekeken

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?

Gebruikers-avatar
Berichten: 7
Geregistreerd: 13 Okt 2015, 18:42

Re: zelf mijn canbus shield bouwen en programmeren.

Berichtdoor gerard » 25 Dec 2015, 00:58

Hoi, weer een tijdje geleden dat ik met dit project begonnen ben maar het gaat wel altijd in kleine stapjes vooruit.

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.
Bruggelijkrichter.jpg
diode brug
Bruggelijkrichter.jpg (22.35 KiB) 13134 keer bekeken

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.

Berichten: 4064
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: zelf mijn canbus shield bouwen en programmeren.

Berichtdoor shooter » 26 Dec 2015, 17:12

delay weghalen zeker in de interupt.
830 Hz is 1 milliseconden.
paul deelen
shooter@home.nl

Gebruikers-avatar
Berichten: 270
Geregistreerd: 30 Dec 2012, 11:42

Re: zelf mijn canbus shield bouwen en programmeren.

Berichtdoor Rudi » 27 Dec 2015, 13:09

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.
Arduinows!
Why do computer programmers confuse Halloween with Christmas? Because Oct 31 = Dec 25
I got 01100011 problems but a bit ain't 00000001

Gebruikers-avatar
Berichten: 7
Geregistreerd: 13 Okt 2015, 18:42

Re: zelf mijn canbus shield bouwen en programmeren.

Berichtdoor gerard » 30 Dec 2015, 23:59

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:
ABSSensor.nl.png
inductieve sensor
ABSSensor.nl.png (6.85 KiB) 13009 keer bekeken

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:
Schermafbeelding 2015-12-30 om 22.17.43.png
inductieve sensor, arduino uno
Schermafbeelding 2015-12-30 om 22.17.43.png (82.52 KiB) 13009 keer bekeken


Maar nu helemaal ontopic :D
Ik ben verder gegaan met mijn canbus shield. ik heb hem getest met sparkfun codes.
Schermafbeelding 2015-12-30 om 16.44.11.png
spark fun reading demo test
Schermafbeelding 2015-12-30 om 16.44.11.png (37.48 KiB) 13009 keer bekeken

alles oké. dat gaat goed 8-)

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 :oops:
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.

Volgende

Terug naar Gezamenlijke projecten

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 6 gasten