Fluidr
about   tools   help   Y   Q   a         b   n   l
User / fotoopa
Frans / 8,468 items

N 3 B 214 C 0 E Apr 23, 2024 F Apr 23, 2024
  • DESCRIPTION
  • COMMENT
  • O
  • L
  • M

Het is zo ver, al mijn Lego devices worden bestuurd door mijn Cyclone10 LP FPGA. Alle 8 de Port ingangen werken met auto detection van de Lego device. Alle data kan uitgelezen worden en is beschikbaar voor de TXT controller. Via de TXT software kan ik nu alle device uitlezen en besturen.
Dit project is nog in volle ontwikkeling. Bijna alle beschikbare IO pinnen zijn gebruikt. Met de remote control van een oude DVD player heb ik nog 40 toetsen beschikbaar. Zo selecteer ik nu de 4 pages van de LCD 4x20 char display.

De Lego motoren hebben een ingebouwde absolute encoder en ook een 32bit relatieve positie teller ingebouwd. Een toer van de motor komt overeen met 360 pulsen. Vooral deze motoren hebben vele voordelen tov de Fischertechnik motoren. FT heeft geen ingebouwde teller en de encoder is slecht 1 channel waardoor echte quadrature decoding met een FT motor niet mogelijk is. Lego is hiervoor een uitstekende vervanger.

De FPGA is reeds mooi bezet:

Flow StatusSuccessful - Mon Apr 22 19:56:14 2024
Quartus Prime Version22.1std.2 Build 922 07/20/2023 SC Lite Edition
Revision Namecycl10_lcd
Top-level Entity Namecycl10_lcd
FamilyCyclone 10 LP
Device10CL025YU256I7G
Timing Models Final
Total logic elements 11,163 / 24,624 ( 45 % )
Total registers 6182
Total pins 134 / 151 ( 89 % )
Total virtual pins 0
Total memory bits 1,152 / 608,256 ( < 1 % )
Embedded Multiplier 9-bit elements0 / 132 ( 0 % )
Total PLLs 1 / 4 ( 25 % )

De TXT mag ook de powerpins 1 en 2 sturen. De positie is via I2C beschikbaar. Met de PC kun je met de TXT software tot 4 motoren besturen.
Wil je echter de motoren met de FPGA besturen dan kan het ook. Dan worden de TXT uitgangen niet aangesloten maar de power pinnen worden dan met de TB6612 modules gestuurd. Zo blijft de TXT nog volledig beschikbaar voor de gewone FT modules. Het mooie is dat al de uitlezing nu op de PC kan. Terzelfdertijd kunnen ook resultaten op het LCD scherm gegeven worden. Zo staan alle gedecodeerde device ID's op page1 van de LCD display en zie je welke Lego device actief is.

Ik ga nu verleng kabels maken voor de Lego devices. Dit kan reeds met twisted pair kabel van 3x2x0.14 of 4x2x0.14 Met twisted pair kan je beter signaal overdracht behouden voor de 2 serial lines. Gebruik je 4x2x0.14 dan heb je meer doorsnee voor de powerpins van de motoren. Deze kabels zijn vrij dun en soepel waardoor ze zeer beweegbaar zijn.

Tags:   fotoopa Lego Cyclone Cyclone10 Cyclone10 LP TXT Fischertechnik remote control lego devices TSOP1738 Distance sensor Force sensor Color sensor TB6612

N 1 B 978 C 0 E Apr 8, 2024 F Apr 8, 2024
  • DESCRIPTION
  • COMMENT
  • O
  • L
  • M

Breadboard bedrading is voltooid. Power verdeling is afgewerkt en getest. De TXT controller is ook verbonden via I2C. De resultaten kunnen straks via het LCD scherm gegeven worden en ook via de TXT controller naar de PC. Er is remote control voor zien op de Cyclone10 met een TSOP38 (moet nog op de breadboard). Via de TXT is ook remote control mogelijk met een FT RC box. De 3V3 power voor de Lego devices is gemaakt via de 9V en een dc-dc 3V3-1.5A. De TB6612 modules zelf moeten nog ingeplugd worden maar alle connecties zijn al klaar.
Het grootste werk is nu de software verder uitwerken. Ik heb al wat routines klaar van de eerste testen. Die moeten verder uitgewerkt worden voor alle 8 lego Ports.

Tags:   Lego Fischertechnik fotoopa FPGA LCD Cyclone10 Cyclone10 LP TB6612 breadboard

N 1 B 1.2K C 0 E Apr 4, 2024 F Apr 4, 2024
  • DESCRIPTION
  • COMMENT
  • O
  • L
  • M

Project in opbouw voor gebruik van Lego devices met de Cyclone10 LP module.

Met dit project kun je gebruik maken van de meeste lego devices met je eigen hardware. De software is in ontwikkeling. Ik gebruik hiervoor de Quartus tools voor de FPGA routines. Momenteel werkt de detectie van de veschillende lego motoren en sensoren met 1 port in de test versie. Door het uitlezen van hun ID nummer kun je de verschillende parameters verwerken en de data uitlezen. Lego motoren met ingebouwde quadrature encoder is hiervan een voorbeeld. Ik maak nu het project om maximaal 8 ports te gebruiken. De Cyclone10 LP heeft hiervoor voldoende beschikbare I/O pinnen. De FPGA heeft het voordeel dat alles parallel loopt en er zo minder timings problemen optreden om alle data te kunnen verwerken. 8 ports betekenen 8x TX en 8x RX lijnen op 115K baud. Ook de powerpinnen pin1 en pin2 van iedere port moeten kunnen gestuurd worden. Via I2C kan ik ook de Fischertechnik controller gebruiken om het geheel te besturen en uit te lezen op de Windows 11 PC. Stap bij stap zal ik wel nieuwe resultaten geven.

Tags:   fotoopa Lego FPGZ Cyclone Cyclone10 Cyclone10_Lp

N 1 B 1.6K C 0 E Mar 23, 2024 F Mar 23, 2024
  • DESCRIPTION
  • COMMENT
  • O
  • L
  • M

Ik ben al geruime tijd bezig om alle Lego devices te kunnen aansturen met mijn eigen hardware. Hierdoor heb ik geen Lego hub meer nodig. Om dit werkend te maken hoef je het Lego protocol grondig te bestuderen. Om een Lego device te connecteren moet de powerup sequentie overeen komen met het Lego protocol.
Iedere device type heeft zijn eigen ID nummer. Hier zie je dat de led matrix ID 64 heeft. Dat wordt weergegeven op het LCD scherm. Eens je de connectie klaar hebt moet je nog de juiste mode instellen om de data gegevens te kunnen doorsturen. De meeste problemen zijn nu opgelost waardoor ik alle devices kan gebruiken.
Zo heeft een Lego motor een ingebouwde quadrature encoder met een absolute teller voor 360 graden. Daarnaast heeft hij een relatieve 32 bit teller voor de positie. De absolute waarde maakt het mogelijk om na de opstart naar zijn ingebouwde home punt te kunnen gaan. Ook zijn nog andere parameters zoals snelheid direct uit te lezen. Ik bezit meerdere motoren en zal ze nu ook kunnen gebruiken met mijn Fischertechnik toepassingen. Het protocol is voor de verschillende motoren met een ingebouwde encoder hetzelfde.
Hierbij enkele types.

Motors ID nummers:
46 (0x2e) Technic Control+ Large Motor
47 (0x2f) Technic Control+ XL Motor
48 (0x30) SPIKE Prime Medium Motor
49 (0x31) SPIKE Prime Large Motor
65 (0x41) Technic Small Angular Motor
76 (0x4C) Technic Large Angular motor, gray
75 (0x4B) Technic Medium Angular Motor, gray

Andere ID device zijn:
61 (0x3D) Technic Color Sensor
62 (0x3E) Technic Ultrasonic/Distance Sensor
63 (0x3F) Technic Force Sensor
64 (0x40) Technic 3x3 Color Light Matrix

Al deze devices heb ik al kunnen opstarten. Nu ga ik verder werken om meerdere modules gelijktijdig te kunnen aansluiten en gebruiken. Er blijft dus nog heel veel werk over.

Credits voor de analyze van het protocol gaan vooral naar:
github.com/maarten-pennings/Lego-Mindstorms/blob/main/ms4...
pybricks.com/

Ondertussen heb ik voor Pybricks ook hun Pybricks For Life (Perpetual) aangekocht waardoor bepaalde testen met block coding sneller gaan. Een echte aanrader! Ik gebruik de Minstorms inventor hub met de pybricks versie. Zo heb ik de keuze om met Python of blocks te werken voor de testen.

Tags:   fotoopa Lego Cyclone Cyclone10-LP verilog

N 2 B 3.0K C 0 E Feb 26, 2024 F Feb 26, 2024
  • DESCRIPTION
  • COMMENT
  • O
  • L
  • M

I found another old test print with a Cyclone chip EP1C6T144 from 2003. I almost threw the test print away because it was already so old. There is nothing more of it on the web. Fortunately, I had still found a small documentation on one of my oldest hard disks. I had not connected this test print before because it was difficult to start something like this back then. In the old Quartus 10 version you can still find the lib of these cyclone chips. There was no quartz present on the board, I then just added an external 25MHz quartz. This quartz oscilator also works on 3V3 so that I could connect the output directly to the cyclone (I used a series resistor of 100 ohms for the connection anyway). Inserted my existing LCD4x20char verilog code into it, pointed out the correct pins and yes it worked immediately. I do have to use the old Terasic Byte blaster here via the Jtag connector. The .sof file went in directly but to program the flash did not. The flash used was an EPCS1 chip. First the programmer gave an error message that the data was too large for this flash chip. After some searching, the solution was that you have to turn on the compression bit in the compiler settings to get the correct .pof file. After that, everything worked perfectly. This Cyclone has 5980LEs, 92Kbit RAM and 2 PLLs. The many pins still make the chip very usable.
Translated with DeepL.com (free version)

Ik heb nog een oude testprint gevonden met een Cyclone chip EP1C6T144 uit 2003. De testprint had ik bijna weggegooid omdat die al zo oud was. Er is niets meer van te vinden op het web. Gelukkig had ik nog een kleine documentie gevonden op een van mijn oudste harddisken. Deze testprint had ik vroeger niet aangesloten omdat het toen moeilijk was om zoiets op te starten. In de oude Quartus 10 versie vindt je nog de lib van deze cyclone chips. Er was geen quartz aanwezig op de board, ik heb dan maar een externe 25MHz quartz bijgeplaatst. Deze quartz oscilator werk ook op 3V3 zodat ik de uitgang direct op de cyclone kon aansluiten (toch maar een serie weerstandje van 100 ohm gebruikt als daadvebinding). Mijn bestaande LCD4x20char verilog code erin geplaatst, de juiste pinnen aangegeven en ja hij werkte direct. Ik moet hier wel de oude Terasic Byte blaster gebruiken via de Jtag connector. De .sof file ging er direct in maar om de flash te programmeren ging het niet. De gebruikte flash was een EPCS1 chip. Eerst gaf de programmer een foutmelding dat de data te groot was voor deze flash chip. Na wat zoeken was de oplossing dat je bij de compiler settings de compressie bit moet aanzetten om de juist .pof file te verkrijgen. Daarna werkte alles perfect. Deze Cyclone heeft 5980LEs, 92Kbit RAM en 2 PLLs. De vele pinnen maken de chip nog zeer bruikbaar.

Tags:   fotoopa Cyclone EP1C6T144 FPGA LCD4x20


0.1%