BeneluxSpoor.net forum
Vraag en antwoord => Digitaal => Topic gestart door: PeterKuiper op 11 May 2022, 11:49:02
-
Ik heb op mijn Arduino Mega2560 een Motorshield R3 L289 gemonteerd. Op de Arduino draai ik de nieuwste DCC versie. Alles werkte in combinatie met RocRail prima tot dat ik een MCP23017 (van merk Gravity) aansloot. Zolang ik het Motorshield niet aanzet, werken de melders die via de MCP23017 zijn aangesloten perfect. Zodra ik de Motorshield aanzet werken de melders die via de MCP23017 lopen niet meer en als ik daarna de Motorshield weer uitzet blijft het probleem bestaan. Alleen als ik helemaal opnieuw opstart (inclusief verbreken van de verbinding met de computer) werken deze melders via de MCP23017 weer.
Ik dacht eerste dat het probleem werd veroorzaakt doordat ik relatief veel melders heb aangesloten op de 5volt van de Arduino. Maar ik heb de spanning gemeten en de spanning verandert niet bij het inschakelen van de Motorshield. Ik heb verder een aparte 5volt voeding aangesloten op de MCP23017 maar dat zorgde voor meer problemen zoals niet meer vinden van alle melders.
Weet iemand hoe ik dit probleem kan oplossen of wat ik verder kan proberen om te achterhalen wat er precies mis gaat.
-
Ik vermoed eerder een software probleem, maar het is niet duidelijk op dit moment. Als je mcp alleen melders inleest, zal die niet veel stroom trekken. Het motor shield trekt ook weinig van de 5V circuit.
Ik heb wat vragen.
Hoe precies zet je het shield aan en uit?
Wat voor melders gebruik je? Massadetectie? stroom detectie?
Heb je een schema gemaakt?
Ik ga even dat motorshield bekijken. Kan jij op een manier de software en iets van een schema online zetten?
Mvg,
Bas
-
Ik heb geen specifieke kennis van DCC+ met een motorshield en de MCP23017 (dat is de versie die met I2C communiceert). Maar het zou mij niet verbazen als de DCC+ code de timers van de Arduino veranderd en dat dat een conflict oplevert met de I2C interface, die zijn eigen timer settings heeft. Iets anders is dat een andere variant van de MCP23017 met SPI werkt, en hoe praat de motorshield met de Arduino, waarschijnlijk ook met SPI en dan zou ook daar een conflict kunnen ontstaan.
Groet Meino
-
Voor zover ik weet, maakt I2C geen gebruik van de drie hardware timers. Daar heeft de chip een apart stukje hardware voor.
Maar als je de verkeerde timer gebruikt waardoor bijvoorbeeld millis() niet meer werkt, kan je onbedoeld de helft van een programma onklaar maken.
Dus... source code..
Bas
-
Ik gebruik deze centrale ook in combinatie met Rocrail.
een Deek Robot motorshield L298P en een MCP23017 (merkloos) via I2C.
op de 2e I2C uitgang een PCA9685 bordje voor de servo's.
als test op de MCP23017 voorlopig infrarood melders.
deze komen probleemloos binnen in Rocrail onafhankelijk of de railuitgang van het motorshield aan of uit wordt gezet.
ik herken het probleem dan ook niet.
-
Hoe heb je de DCC++ EX software geïnstalleerd? Via de automatische installer? Heb je daar dan wel het juiste motorshield geselecteerd?
Heb je nog meer aangesloten op de poorten van de motorshield? Houd er rekening mee dat je niet alle poorten kunt gebruiken, zo uit mijn hoofd in ieder geval A0 en A1 niet.
Heb je aan de onderkant van de motorshield de verbinding VIN-Connect verbroken?
Als je er niet uitkomt dan raad ik je aan je probleem te melden op het Discord forum van het DCC++ EX team. De link naar dat forum vind je op de website, ik heb hem op dit moment even niet voorhanden.