BeneluxSpoor.net forum

Vraag en antwoord => Elektronica en analoog => Topic gestart door: AlcoPost op 23 September 2016, 22:42:53

Titel: Loconet banenprint
Bericht door: AlcoPost op 23 September 2016, 22:42:53
Hoi,

Ik gebruik een schema uit een oud topic (http://forum.beneluxspoor.net/index.php?topic=63567.45) en dit gaat helemaal goed als ik het op een breadboard maak dan werkt het feilloos.
Dus ik dacht ik maak het op een banenprintplaat maar ergens maak ik een denkfout denk ik want hij doet het niet. Ik heb mijn ontwerpje in Excel  :angel: toegevoegd en de printbanen onder de 10K en 100K weerstanden zijn onderbroken.
Lineout gaat naar pin 6, en niet zoals op het plaatje naar pin 7.
Wie heeft een idee wat ik verkeerd doe, of klopt het en ben ik gewoon niet zo goed in solderen  ;D ;D ;D
Wie heeft er een goed advies ?

(https://images.beneluxspoor.net/bnls/loco.png) (https://images.beneluxspoor.net/bnls/loco.png)
(https://images.beneluxspoor.net/bnls/LocoPlaatje.jpg) (https://images.beneluxspoor.net/bnls/LocoPlaatje.jpg)
Titel: Re: Loconet banenprint
Bericht door: NTeering op 23 September 2016, 23:19:48
Ik kan zo gauw ook geen fout ontdekken. Het Excel schema lijkt me wel goed.

Deze deed het wel, maar daar ben je niet mee geholpen.
(https://images.beneluxspoor.net/bnls/arloco.jpg) (https://images.beneluxspoor.net/bnls/arloco.jpg)
Om de loconet kabel zit een grote groene krimpkous

Nico
Titel: Re: Loconet banenprint
Bericht door: Timo op 24 September 2016, 14:02:37
Ik kan het niet helemaal goed zien maaruh, verbind je alleen LN_IN en LN_OUT met je micro? Dan gaat het inderdaad niet werken, je moet de derde draad, GND, ook wel verbinden  ;D Er moeten dus drie draden tussen interface en uC zitten.


Timo
Titel: Re: Loconet banenprint
Bericht door: AlcoPost op 24 September 2016, 15:28:13
De ground had ik ook verbonden is een grijs kabeltje  tegenover de gele en de rode op de onderkant van de printplaat.
Titel: Re: Loconet banenprint
Bericht door: AlcoPost op 25 September 2016, 09:39:51
Hoi,

Ik weet niet of iemand hier iets aan kan zien maar ik heb het schema voor de strokenprint aangepast naar het volgende, en op mijn braedboard werkt hij wel :-) maar als ik hem gesoldeerd heb doet hij het niet :-(
Kan iemand iets zien ? voor zover ik het kan doormeten heb ik alles gecheckt met mijn multimeter :-(

(https://images.beneluxspoor.net/bnls/Loconet2.png) (https://images.beneluxspoor.net/bnls/Loconet2.png)
(https://images.beneluxspoor.net/bnls/Schema.png) (https://images.beneluxspoor.net/bnls/Schema.png)
Titel: Re: Loconet banenprint
Bericht door: Bert Mengerink op 25 September 2016, 09:55:57
Ik zie geen onderbrekingen in de strokenprint op de plaats van de transistor. Nu zit Gnd aan LocoNet 2,5 en 3,4.

Groet,
Bert
Titel: Re: Loconet banenprint
Bericht door: AlcoPost op 25 September 2016, 10:27:46
Bert,

Volgens mij hoeft er geen onderbreking tussen want elk pootje van de transistor zit op een aparte baan, en alleen loconet 2,5 gaan rechtdoor naar de GND, Loconet 3,4 gaan naar de collector van de transistor.

(https://images.beneluxspoor.net/bnls/GND.png) (https://images.beneluxspoor.net/bnls/GND.png)
Titel: Re: Loconet banenprint
Bericht door: lok1614 op 25 September 2016, 14:34:37
Nu je de foto zo uitvergroot zou ik eerst maar eens gaan kijken naar de twee soldeerverbindingen links bovenin de foto,  de meest linkse zit op zeker niet vast en zijn buurman ziet er ook niet jofel uit.

Gr Peter
Titel: Re: Loconet banenprint
Bericht door: 72sonett op 25 September 2016, 20:41:01
Volgens het schema zit daar niets op aangesloten dus dat maakt niet uit.

Waarom zitten er 3x2 = 6 aansluitingen als je maar 3 nodig bent (LN-in, LN-uit en massa)?
Titel: Re: Loconet banenprint
Bericht door: AlcoPost op 25 September 2016, 20:45:18
Volgens het schema zit daar niets op aangesloten dus dat maakt niet uit.

Waarom zitten er 3x2 = 6 aansluitingen als je maar 3 nodig bent (LN-in, LN-uit en massa)?

Ik had allleen maar aansluit pinnen waar er 2 opzaten en ik wilde het niet te compact maken maar een beetje overzichtelijk.
Ik heb van alle schroefjes op de  connector goede verbinding naar de printbanen, en inderdaad het linker pootje van de linker connector was niet vast gesoldeerd maar daar zit inderdaad niks op (goed gezien).

Alvast bedankt voor het kijken maar ik kan niet ontdekken wat ik verkeerd doe :-(
Titel: Re: Loconet banenprint
Bericht door: AlcoPost op 25 September 2016, 20:52:10
Iets compater met 1 connector minder.

Als ik geen soldeer fout maak dan klopt onderstaande toch gewoon ?

(https://images.beneluxspoor.net/bnls/Loco3.png) (https://images.beneluxspoor.net/bnls/Loco3.png)
Titel: Re: Loconet banenprint
Bericht door: 72sonett op 25 September 2016, 21:22:33
Ja, het printje lijkt wel te kloppen met het schema. Intuitief wat moeilijk, schema is van links naar rechts, printje van rechts naar links...
ExpressPCB (https://www.expresspcb.com/free-cad-software/) is een gratis programma om schema's en printjes te tekenen.

Er bestaan overigens wel blauwe blokjes met 3 aansluitingen. Je weet dat je ze ook in/aan elkaar vast kan schuiven?
Titel: Re: Loconet banenprint
Bericht door: AlcoPost op 27 September 2016, 19:34:38
Ik heb het schema nog een keer vereenvoudigd, en gesoldeerd en hij doet het  (y) (y) (y) (y)
Nu kan ik 16 reed terugmelders aansluiten op 1 Arduino en deze via de Z21 via loconet terugmelden aan traincontroller  (y)

(https://images.beneluxspoor.net/bnls/Loco3_1.png) (https://images.beneluxspoor.net/bnls/Loco3_1.png)


Titel: Re: Loconet banenprint
Bericht door: Bert Mengerink op 27 September 2016, 23:09:26
Welke library gebruik je voor LocoNet? Ik wil ook beginnen aan een Arduino met LocoNet.

Groet,
Bert
Titel: Re: Loconet banenprint
Bericht door: AlcoPost op 27 September 2016, 23:45:42
Welke library gebruik je voor LocoNet? Ik wil ook beginnen aan een Arduino met LocoNet.

Groet,
Bert

Ik heb het loconet voorbeeld uit deze post : http://forum.beneluxspoor.net/index.php/topic,63567.msg3221580877.html#msg3221580877

Met onderstaande code, ik gebruik pin 6 maar dat kun je aanpassen via TX_PIN
Loconet.h is te vinden via http://www.globalvisuals.nl/downloads/loconet-master.zip

#include <LocoNet.h>
int offset = 1; //number in fictitious s88 chain
#define  TX_PIN  6
// pin 8 is receiving
static LnBuf LnTxBuffer;
static lnMsg *LnPacket;
byte IN1;
byte IN2 = 255;
byte broadcast = 255;
byte address_received = 255;
byte numSensors = 1;
int j;
int sensorPins[16] = {A0,A1,A2,A3,A4,A5,0,2,3,4,5,6,7,9,10,12};
int sensorValue[16] = {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1};
int lastsensorValue[16] = {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1};
unsigned long sensorprevmillis[16];
unsigned long currentmillis;
unsigned long interval = 500;

//-------------------
void setup()
{
  offset = ((offset - 1) * 16) + 1;  //1 = adres 1 t/m 16, 2 = adres 17 t/m 32 etc.
 
  for (j=0; j<16; j++) pinMode(sensorPins[j], INPUT_PULLUP);
 
  pinMode(13,OUTPUT);
  digitalWrite(13,LOW);
 
  Serial.begin(57600);
  Serial.println("Hallo, i am awake!!");
 
  LocoNet.init(TX_PIN);
  initLnBuf(&LnTxBuffer);
  IN1 = address_received;
  IN1 = IN1 >> 1;
  bitClear (IN1,7);
  bitSet (IN2,6);
  bitWrite (IN2,5, bitRead(address_received,0));
}
//---------------------
void loop()
{
  LnPacket = LocoNet.receive();
  if(LnPacket)
  {
    printRXpacket();
    if (LnPacket -> data[0] == 0x83) sendALLsensors();
  }
  for (j=0; j<16; j++) processSensor(j);
}
//----------------------
void printRXpacket ()
{   
  uint8_t Length = getLnMsgSize( LnPacket ) ;
  Serial.print("RX: ");
  for (uint8_t Index = 0; Index < Length; Index++)
  {
    Serial.print(LnPacket->data[ Index ], HEX);
    Serial.print("  ");
  }
  Serial.println();
}
//-----------------------
void sendTXtoLN (byte firstbyte, byte secondbyte)
{   
  byte checksum = 0xFF - (0xB2^ firstbyte ^ secondbyte);
  addByteLnBuf(&LnTxBuffer, 0xB2);
  addByteLnBuf(&LnTxBuffer, firstbyte);
  addByteLnBuf(&LnTxBuffer, secondbyte);
  addByteLnBuf(&LnTxBuffer, checksum);
  LnPacket = recvLnMsg( &LnTxBuffer);
  if (LnPacket)
  {
    LocoNet.send( LnPacket );
    Serial.print("TX: ");
    Serial.print("  ");
    Serial.print(firstbyte);
    Serial.print("  ");
    Serial.print(secondbyte, HEX);
    Serial.print("  ");
    Serial.print(checksum, HEX);
    Serial.println();
  }
}
//-----------------------------------------
void sendALLsensors ()
{
  byte tempaddr;
  for (j=0; j<16; j++)
  {
    tempaddr = address_received + j;
    IN1 = tempaddr;
    IN1 = IN1 >> 1;
    bitClear (IN1,7);
    bitSet (IN2,6);
    bitWrite (IN2,5, bitRead(tempaddr,0));
    bitWrite (IN2,4, !sensorValue[j]);
    sendTXtoLN (IN1, IN2);
  }
}
//------------------------------------
void processSensor (int sensornumber)
{
  sensorValue[sensornumber] = digitalRead(sensorPins[sensornumber]);
  currentmillis = millis ();
  byte tempaddr = 0;
  byte byte1 = 0;
  byte byte2 = 0;

  if ((sensorValue[sensornumber] != lastsensorValue[sensornumber]) && (currentmillis - sensorprevmillis [sensornumber] > interval))
  {
    lastsensorValue[sensornumber] = sensorValue[sensornumber];
    sensorprevmillis [sensornumber] =currentmillis;
    tempaddr = address_received + sensornumber + offset;
    byte1 = tempaddr;
    byte1 = byte1 >> 1;
    bitClear (byte1,7);
    bitSet (byte2,6);
    bitWrite (byte2,5, bitRead(tempaddr,0));
    bitWrite (byte2,4, !sensorValue[sensornumber]);
    sendTXtoLN (byte1, byte2);
  }
}
Titel: Re: Loconet banenprint
Bericht door: NTeering op 27 September 2016, 23:52:56
Welke library gebruik je voor LocoNet? Ik wil ook beginnen aan een Arduino met LocoNet.

Groet,
Bert

Hallo Bert,

De source staat hier: http://forum.beneluxspoor.net/index.php/topic,63567.msg3221580877.html#msg3221580877
De library vind je hier: www.globalvisuals.nl/downloads/loconet-master.zip (http://www.globalvisuals.nl/downloads/loconet-master.zip)

Wordt wellicht tijd voor een ARLOCO naast de MARDEC

Nico
Titel: Re: Loconet banenprint
Bericht door: Timo op 28 September 2016, 00:16:46
ik gebruik portje 6 maar dat kun je aanpassen via TX_PIN
[mierenneuken aan]
Je gebruikt pin 6, niet poort 6. Een poort is meerdere pinnen :)

En paar kleine opmerking over de code. (Niet nagatief bedoel, alleen ter ondersteuning/leering/etc.)

Probeer één stijl van variabele namen te gebruiken. Dus niet IN1, numSensor address_received, dat zijn drie stijlen. De gebruikelijke stijl binnen Arduino is camelCase (wat sommige kennen als lower camelCase). Dus in1, numSensors, addressReceived.

En zodra je variabele gaat nummeren is het tijd voor een array ;D Die doet dan automagisch de nummering voor je. Dus
byte in[] = {0, 255};

sensorPins, sensorValue en lastsensorValue (=> lastSensorValue) zouden de helft zo veel geheugen innemen als je ze byte zou maken, groot zat. Laatste kunnen zelfs bool zijn (maar daar maakt Arduino toch een byte van). sensorPins zou je kunnen aanpassen naar
const byte SensorPins[]

Variabele j heeft geen enkel recht global te zijn. Het is niet nodig (en zou zelfs makkelijk voor problemen kunnen zorgen als meerdere functies een loop counter j zouden gebruiken) en een variabele "hoort" een uitleggende naam te hebben. Dus beter om hem lokaal aan te maken in de for-loop.
for (byte j=0; j<16; j++) pinMode(sensorPins[j], INPUT_PULLUP);

    IN1 = IN1 >> 1;
    bitClear (IN1,7);
Na een shift-right is bit 7 vanzelf al wel cleared ;D Dus de clear is onnodig. Maar überhaupt, wat is precies het nut van IN1 en IN2? Je doet er bijvoorbeeld wat mee in setup() maar de enige andere plek waar je er vervolgens iets mee doet schrijf je er toch eerst andere waardes heen  ???

En wat commentaar her in der in de code zou ook geen kwaad kunnen. Ik kan uit ervaring zeggen dat future you (toekomstige jij) er erg blij mee is  ;D

[mierenneuken uit]

Maar wel mooi dat het nu werkt. Gek dat eerdere versies niet werkte maar ik denk inderdaad je gewoon iets meer moet oefenen met mooie solderingen te maken.

@NTeering, echo?  ??? ;D


Timo

PS Nogmaals, geen commantaar, alleen bedoelt als tip! Al leuk om te lezen dat meer mensen er mee bezig zijn  (y)
Titel: Re: Loconet banenprint
Bericht door: 72sonett op 28 September 2016, 00:51:30
Ik zie bij de declaraties;
...
byte IN1;
...
byte address_received = 255;
...

vervolgens in setup;

...
  IN1 = address_received;    // IN1 wordt 255 = B1111 1111
  IN1 = IN1 >> 1;          // IN1 wordt nu B01111111 want type = byte 'unsigned' dus geen 1 van links
  bitClear (IN1, 7);       // IN1 wordt nu  B01111111, maar dat was hij al
   ...

Je kunt in de declaratie dus ook schrijven;
byte address_received = B01111111;
byte IN1 = address_received;
en de 3 regels in setup weglaten.

Citaat
... bedoelt als tip!
Je bedoelt bedoeld als tip.
Titel: Re: Loconet banenprint
Bericht door: AlcoPost op 28 September 2016, 07:23:33
Een ARLOCO naast de MARDEC lijkt me helamaal super  :) :)

<wens>
En dan een simpel banen printje er bij met een female connector erop voor de loconet kabel, dat zou het helemaal af maken.

Wat ook handig zou zijn, om er dan een filmpje bij te maken zoals RudyB ze maakt zie https://rudysmodelrailway.wordpress.com/2016/05/29/traincontroller-42-loading-wagons-using-a-sensor/
Zodat het hele proces duidelijk zichtbaar is van reed contact via de Arduino via het printplatje naar je Centrale en dan aangesloten op een programma (koploper, traincontrolelr of een ander programma) om te tonen hoe je er dan in een blok mee werkt (Een uitgewerkt werkend stukje)

 (y) (y) Dat zou echt helemaal super zijn.  (y) (y)
</wens>

Bedankt voor alle opbouwende tips, ik ga lekker verder spelen.
Titel: Re: Loconet banenprint
Bericht door: Timo op 28 September 2016, 10:18:13
Nouwja, ik heb geen fouten gezien in al je banenprint ontwerpen afgezien dat ze allemaal nogal groot waren en lompe connectoren gebruikte... Dus ben toch echt bang dat het feit dat ze niet werkte aan je soldeerkunsten ligt. Gaat een ander ontwerp niets aan doen  ;)


Timo
Titel: Re: Loconet banenprint
Bericht door: AlcoPost op 28 September 2016, 10:25:57
Nouwja, ik heb geen fouten gezien in al je banenprint ontwerpen afgezien dat ze allemaal nogal groot waren en lompe connectoren gebruikte... Dus ben toch echt bang dat het feit dat ze niet werkte aan je soldeerkunsten ligt. Gaat een ander ontwerp niets aan doen  ;)


Timo
:angel: :angel: :angel: Timo, ik denk dat je gelijk hebt, maar door het 4 keer te doen ben ik wel vooruit gegaan  ;D ;D
Titel: Re: Loconet banenprint
Bericht door: Timo op 28 September 2016, 10:37:12
Oefening baart kunst!  ;D


Timo
Titel: Re: Loconet banenprint
Bericht door: 72sonett op 28 September 2016, 13:12:43
Citaat van: AlcoPost
Een ARLOCO naast de MARDEC lijkt me helamaal super
En dan een simpel banen printje er bij met een female connector erop voor de loconet kabel, dat zou het helemaal af maken.

Zoiets?

(https://images.beneluxspoor.net/bnls/loconet_3.jpg)

Bouwen op een proto shield (http://www.okaphone.com/artikel.asp?id=483271) en die prik je bovenop de Arduino/Mardec.

(http://www.okaphone.nl/product/images/ard-a000082.jpg)

Titel: Re: Loconet banenprint
Bericht door: NTeering op 28 September 2016, 13:57:08
Ik betwijfel of die RJ12 printconnectors wel passen in het standaard 0,1" raster.
Een goedkoper proto shield met breadboard, reset schakelaar en ledjes vind je hier (https://nl.aliexpress.com/item/UNO-Proto-Shield-prototype-expansion-board-with-SYB-170-mini-breadboard-based-For-ARDUINO-UNO-ProtoShield/32252670479.html)
Titel: Re: Loconet banenprint
Bericht door: AlcoPost op 28 September 2016, 14:07:58
Een proto shield ziet er ook wel handig uit, klein vraagje
De printbanen maken  :o hoe doe je dat dan het beste
Titel: Re: Loconet banenprint
Bericht door: 72sonett op 28 September 2016, 15:00:58
Citaat
Ik betwijfel of die RJ12 printconnectors wel passen in het standaard 0,1" raster.

Nee, die passen niet allemaal, je moet een paar gaatjes bijboren.

Citaat
De printbanen maken  hoe doe je dat dan het beste

Je maakt de verbindingen met blank montagedraad, aan de onderkant.
Titel: Re: Loconet banenprint
Bericht door: AlcoPost op 28 September 2016, 21:17:59
Toevallig had ik nog een shield liggen en ik ga deze de komende week op de volgende manier in elkaar zetten, alleen nog even draad halen.

Iemand nog een tip hoe ik het beste van pin 8 naar het eilandje van 3 kom  ::) en hoe ik het beste weerstand 1 soldeer (Aan de onderkant ??)

(https://images.beneluxspoor.net/bnls/Loco2.jpg) (https://images.beneluxspoor.net/bnls/Loco2.jpg)
Titel: Re: Loconet banenprint
Bericht door: ruudns op 29 September 2016, 09:58:40
@Alcopost: waarom soldeer je er niet gelijk een RJ connector tbv loconet op die shield? ;)
Titel: Re: Loconet banenprint
Bericht door: AlcoPost op 29 September 2016, 11:02:10
@Alcopost: waarom soldeer je er niet gelijk een RJ connector tbv loconet op die shield? ;)
Goed punt, maar de Rj Connector is in bestelling en ik wilde wel graag verder :-)
Titel: Re: Loconet banenprint
Bericht door: 72sonett op 29 September 2016, 12:36:16
Citaat
Toevallig had ik nog een shield liggen ...
Iemand nog een tip hoe ik het beste van pin 8 naar het eilandje van 3 kom 
Jammer dat de headers er al op een onhandige plaats op zitten.

In deze Adafruitversie zitten ze een rij verder naar buiten zodat het hele ding nog steeds 'stackable' is en de aansluitingen naar de I/O pinnen vrij blijven;

(https://cdn-learn.adafruit.com/assets/assets/000/022/882/medium640/learn_arduino_2077-02.jpg) (https://cdn-learn.adafruit.com/assets/assets/000/022/882/medium640/learn_arduino_2077-02.jpg)
Titel: Re: Loconet banenprint
Bericht door: Timo op 03 October 2016, 14:05:02
Gelukkig dat de meeste (/alle) proto shield uit China komen zonder de headers gesoldeerd. Want als je goed kijkt is de print 100% hetzelfde  ;D


Timo
Titel: Re: Loconet banenprint
Bericht door: 72sonett op 03 October 2016, 15:53:09
Citaat
... als je goed kijkt is de print 100% hetzelfde
Beter kijken, de hoek linksboven rond LED1 en weerstand R1 is anders.
Titel: Re: Loconet banenprint
Bericht door: Timo op 03 October 2016, 16:51:32
Crap, je hebt gelijk  ;D Maar goed, beide zonder headers is hetzelfde "trucje" mee te doen. Beide stackable te maken met vrije IO pinnen.


Timo