Setup with the new DE0-Nano-Soc board.

Fussballroboter, Autofabrik...
Modellideas &- presentation - Soccerrobot, Carfactory...
Forumsregeln
Bitte beachte die Forumsregeln!
Benutzeravatar
MasterOfGizmo
Beiträge: 2720
Registriert: 30 Nov 2014, 07:44

Re: Setup with the new DE0-Nano-Soc board.

Beitrag von MasterOfGizmo » 02 Okt 2020, 20:59

Have fun! Signaltap is a very nice toy. And it's really not very difficult to use.

And please don't go totally silent for that long. People will blame me for having chased you away ...
Arduino für fischertechnik: ftDuino http://ftduino.de, ftDuino32 http://ftduino.de/32

fotoopa
Beiträge: 312
Registriert: 05 Okt 2017, 11:44
Wohnort: Belgie
Kontaktdaten:

Re: Setup with the new DE0-Nano-Soc board.

Beitrag von fotoopa » 03 Okt 2020, 09:55

I found some videos for the setup of the signaltap in Quartus. This simplifies the startup quite a bit. I think there will be pros and cons with a signaltap. An external LA also has a lot of settings and especially the different serial protocols for I2C and SPI. Whether these are also available in Quartus I don't know yet. I2C and spi is for me the most used to see the interaction between the TXT and the FPGA. The PicoScope with 4 ch has in any case much more depth (32MS). There will be advantages and disadvantages for both applications. Today the grandchildren are coming, but tomorrow I hope to get the first results anyway. In any case, it turns out to go smoothly.

fotoopa
Beiträge: 312
Registriert: 05 Okt 2017, 11:44
Wohnort: Belgie
Kontaktdaten:

Re: Setup with the new DE0-Nano-Soc board.

Beitrag von fotoopa » 10 Okt 2020, 11:38

I checked the signal tap analyser of the quartus. This is a very powerful tool where you have a logic analyser without having to use extra i/O pins. It also proves to be very useful to examine internal activities at very high frequencies.
The only drawback is that it uses quite a lot of resources and your available buffer depth can be a limited factor. A good trigger choice can largely remedy this. After all, the trigger possibilities are very extensive.

My applications are more focused on external activities, especially with the I2C of the TXT controller. To have a good overview of that, you need to have quite deep buffers. That is why I had come to always keep 4 outputs available for external LA analysis. For that purpose I now have the 4 channel picoscope that is actually most used as a logic analyzer. With this I can make up to 1 sec recordings on the 4 channels with a picoscope clock of 120 nsec. This is still fine enough to display the I2C block perfectly and to activate the I2C serial decoder. This gives you an overview of all your forwarded packages. You can see how much time the TXT uses to send all that data. Seeing how long it takes to execute an command is so easy.

Meanwhile the servo spi module is ready and tested. Here you see an image with the spi motor unit and the spi servo unit. At the same time the IR remote unit is read out and the 8 analog 12 bit channels.
Bild

HD picture on Flickr: https://www.flickr.com/photos/fotoopa_hs/50444073036

An image of the Robopro program:
Bild
HD picture on Flickr: https://www.flickr.com/photos/fotoopa_hs/50444250882

And a detail picture of the picoscope analyser.
Bild
HD picture on Flickr: https://www.flickr.com/photos/fotoopa_hs/50444250837

The picoscope is used as a 4 channel logic analyser. Its very large data buffer allows to record data for a very long time and to zoom in with great detail on certain actions afterwards. You have an overview of the I2C packages that you can select via filter setting and then zoom out. This example shows an recording for 1 sec. Number of samples is 8,333,334 This way you can analyze the successive I2C blocks down to the smallest detail. The picoscope uses a clock of 120ns which is high enough to display even the I2C clock. You can zoom out a lot more than the detail picture shows.

This example shows the I2C command to adjust the motor speed to 20. The next pwm of the motor shows the change. The motor speed is ch4 at the bottom. In the FPGA a number of trigger signals are created which I can use. With a key on the control I can select from 8 different triggers. For this I don't have to change the code in the FPGA and don't recompile it.

You see both systems have advantages and disadvantages. The external LA needs very few resources outside its 4 outputs.

Frans.

fotoopa
Beiträge: 312
Registriert: 05 Okt 2017, 11:44
Wohnort: Belgie
Kontaktdaten:

Re: Setup with the new DE0-Nano-Soc board.

Beitrag von fotoopa » 21 Nov 2020, 19:10

To program the De0 Nano Soc board for good motor control, I first examined the motor control of FT. For this I made a setup with 2 motors so I can also test them in synchronous mode with FT.

Bild
HD pictire Flickr: https://www.flickr.com/photos/fotoopa_hs/50629423357

Bild
HD pictire Flickr: https://www.flickr.com/photos/fotoopa_hs/50628581528

Bild
HD pictire Flickr: https://www.flickr.com/photos/fotoopa_hs/50629423432

I adjusted the motor torque shaft for the 4mm steel version so there is less backlash. Also the gearing on the chain module is a 3D print version with less backlash. Motor2 contains a weight suspended on a wire as a load. This makes the load asymmetric between up and down movements. Especially in the test mode with synchronous distance of 2 motors, this is a great challenge to obtain good control. I have to admit, Fischer Technik is doing very well in these circumstances. It is not error-free but still satisfactory.

I made a lot of tests and recordings to be able to make a good analysis afterwards.My new Picoscope 2406B does a great job. The very deep buffer storage allows for long shots with relatively small sample periods.
So the recording time is in function of the sample period:
120 ns --> 1 sec
417 ns -->10 sec
800 ns --> 20 sec
2 usec --> 50 sec
4 usec --> 100 sec
For most measurements I use recording times from 2 sec to 50 sec.

Now some recordings in detail:

Bild
UHD pictire Flickr: https://www.flickr.com/photos/fotoopa_hs/50628275877
Attention these recordings are in UHD format to retain details

Description:
Control of 2 motors via the TXT Controller in synchronous distance mode. Motor 2 has an extra load of 0.5kg while motor 1 is an ordinary chain drive. Motor speed is set to V7. The purpose here is to see how the TXT can control both motors with very small errors. You can see in the diagram detail on the right that the PWM signal of motor 2 is almost at max while motor 1 is limited steered. The mutual error of single pulses is at rising motion quite small, 1 to 2 pulses. Left above you see a detail of both motor positions. For this you need to set the zoom factor at the scope very high. Right on the picture you have a table that shows the last position values and the corresponding times.
The complete data of the Picoscope can be saved to make multiple analyses afterwards, look at details, times to measure brake zone, etc.. These measurements will contribute to support my engine control by the FPGA. This data will be available later on. Currently 12 motor drivers are already in the FPGA. This can be extended to 24 or 30 motors all with quadrature decoders and control.

Bild
UHD pictire Flickr: https://www.flickr.com/photos/fotoopa_hs/50628275897

Description:
Here is a detail of the synchronous control of 2 motors by the TXT. The direction here is descending. Motor2 has a negative load of 0.5kg which pushes down. Motor2 has to send less PWM than motor1 to stay synchronous.
A PWM period contains 3 phases. First we see a brake condition that is relatively short. This is followed by a tristate phase. In this tristate phase you see the EMK of the motor. The third phase is the sending out of the motor. A PWM period is 4785 us. The FPGA sends the position of both motors with every decoder change. Detail of this is shown in the table on the right.

Bild
UHD pictire Flickr: https://www.flickr.com/photos/fotoopa_hs/50628275902

Description:
Overview of controlling 2 motors in synchronous distance mode by the TXT. Motor2 with the red line has a negative load of 0.5kg. Motor1 should get much more power because of this and you can see that on CH C which is almost fully driven. Perfect synchronous with uneven load results in a small error during the whole trajectory. At the end of the trajectory motor2 overshoots a bit more because of the negative load. The error is 3 pulses while motor1 is stuck at 1 pulse from the end. The table on the right shows the last postition values. There you see perfectly how the two pos counters count down. For each pos change the time is also shown. You can also measure the speed of the motor.
The small window gives a detail of the forwarding of the position values. They are here on 112 and 109 a mutual error of 3 pulses. Also the times of position change can be read perfectly

Bild
UHD pictire Flickr: https://www.flickr.com/photos/fotoopa_hs/50627430413

Description:
Here is a detail of the brake zone of the engine2. On the 3rd channel the decoder of the FT motor is added here. This gives an even better insight in how the TXT controls the whole thing. A started PWM section is never interrupted. If the state of the position changes at the beginning of a PWM period, the TXT will only react in the next PWM period. Around time 703.8ms you see the integration of the PWM signal. After each PWM period, the output is slightly wider. Slightly before time 739.5 you see that the FT encoder gives a rising edge. The controller adjusts the integration to a lower value and then back up again. Slightly before 757.4 an encoder pulse comes in again, causing the TXT to stop as this is the desired position 200. My spi readout is a bit later, I don't react on the FT encoder but on my quadrature encoder and they are not stark connected. In front of the quadrature encoder there is a gear reduction of the motor.
Between the values of the position you see that more time passes as you approach the end position. The TXT has just slowed down a bit too much ( pos 198 ) so it needs some extra time to reach the last 2 pulses.
On the right the table of the last part of the trajectory with the times

Bild
UHD pictire Flickr: https://www.flickr.com/photos/fotoopa_hs/50627301458

Description:
This is a setup to see the FT motor control of the TXT. There are 2 motors FT 135484 used, each with a hall decoder signal. The motors are controlled via RoboPro on the PC and the TXT controller. So there is the possibility to control both motors separately but also to let them work together in synchronous mode. The motor decoder signals are on the C1 and the C2 inputs of the TXT. I also connected them simultaneously to my SPI box which is connected to the FPGA. There are also 2x2 decoder signals connected to the SPI box from additional quadrature decoders. The decoder disks are placed directly on the output motor shaft and give 76 p/tr. The internal decoder of the FT motor gives 76.1719 p/tr.
The SPI I/O box is connected to the FPGA that maintains the position of both motors. These values can be read at any time by the TXT via I2C.
For the measurements the Picoscope 2406B is used with 4 channels, 2GS and a deep buffer memory of 32 Mb. This allows very long recording records to be made. At a sample interval of 2us, recordings can be made up to 100 sec on the 4 channels. I use 2 channels for the analog measurement of the engines. Here are on each motor connection 2 resistors of 68 ohms placed and its center point goes to the scope. So you always have positive signals independent of the motor direction. You measure half the motor voltage versus ground.
The position of both motors, tracked in the FPGA, is at every position change serially sent to the scope. Because I also need an ena signal, the clk + ena are brought together via 3 resistors. This way I save a channel on the scope. The data transfer time for a motor position is 87 usec. Compared to the PWM period of 4785 us you should not miss any position change.
At the max speed of the motor you have about 315 tr/min which gives an encoder pulse every 2500 usec.
The PicoScope can make an export of all these motor position values to put them in tables afterwards and create a diagram. This way you can see the progress of the motor movement as a function of time, deviations, positioning times etc.. With synchronous motor control of 2 motors you also see the mutual deviation.

Sorry for this rather long post. I also have recordings and methods of how I control the motors through the FPGA. This data will be discussed a bit later.

Frans.

fotoopa
Beiträge: 312
Registriert: 05 Okt 2017, 11:44
Wohnort: Belgie
Kontaktdaten:

Re: Setup with the new DE0-Nano-Soc board.

Beitrag von fotoopa » 11 Dez 2020, 15:24

Overview of motor positioning with the TXT and the FPGA (via I2C).
The big difference is that the TXT uses the built-in motor encoder pulse. With the FPGA I use the quadrature decoder mounted on the motor shaft. The TXT is controlled via distance input, the FPGA is controlled with abolute position values. Both regulations work well when using normal loads. In the case of asymmetrical loads, errors occur at the TXT. These can be significantly large. The problem is that once you are out of loop control, all changes due to shocks or external loads are no longer registered. Without entering a new reference, the errors get bigger and bigger as they add them together. The FPGA has its own hardware that will always be active as long as the voltage is present. Every rotation is always recorded in the current position counter.
Here is a plot of both situations:

Bild
HD picture on Flickr: https://www.flickr.com/photos/fotoopa_hs/50705503826

The plot shows 17 cycles. The top figure is the TXT, the bottom figure is the FPGA. You can avoid this error by the TXT if you try to go to a zero or reference point after each cycle. With the FPGA this is not necessary because he calculated how far he must go from the current starting point to the new position value. The FPGA has information about the direction even when external forces come on the motor shaft that cause a rotation.

I use quadrature decoders. These are made with 2 hall sensors type AH3144E and placed in a housing. The center distance of both sensors are 6.6mm. For this you need an encoder disk. It contains neodymium magnets of D2x3 mm and the distance between them must be 8.8 mm to get a correct quadrature signal.
Hereby a picture of the constuction.:

Bild
HD picture on Flickr: https://www.flickr.com/photos/fotoopa_hs/50705503966

Bild
HD picture on Flickr: https://www.flickr.com/photos/fotoopa_hs/50704765073

Bild
HD picture on Flickr: https://www.flickr.com/photos/fotoopa_hs/50705587582

Now I made a setup with an XS-motor directly coupled to the motor shaft without reduction. For this I had to make a small adaptor piece (3D printing) to connect a standard 4mm shaft. On the 4mm shaft is the encoder disc with a diameter of 59mm and it contains 19 magnets. This results in 76 pulses per revolution. The XS motor can run over 6000 tr/min which gives 7600 pulses per second to the encoder input. This is quite high and no longer achievable by the TXT.
Overview of the measurement:

Bild
HD picture on Flickr: https://www.flickr.com/photos/fotoopa_hs/50704765028

A plot of motor movement:
Bild
HD picture on Flickr: https://www.flickr.com/photos/fotoopa_hs/50704764988

The motor accelerates very well but it reacts very badly to braking or counter-steering. The result of this is a strong undershoot and overshoot at the endpoint. I did have to secure everything carefully to avoid vibrations at these high revs. The plot is made through my Picoscope 4ch where every position change of the motor position is sent to the scope. This allows me to follow the entire course of the motor over very long times (up to 50sec), measure speeds, determine the braking zone, check of the PWM signal etcetera. I didn't make any further adjustments because it doesn't make much sense without the standard reduction module on the motor.

Frans.

fotoopa
Beiträge: 312
Registriert: 05 Okt 2017, 11:44
Wohnort: Belgie
Kontaktdaten:

Re: Setup with the new DE0-Nano-Soc board.

Beitrag von fotoopa » 12 Dez 2020, 14:52

The next test is the XS motor with reduction box. This is a more practical application.

Bild
HD on Flickr: https://www.flickr.com/photos/fotoopa_hs/50709659947

This is the setup of the XS motor coupled to the encoder disk for 76 pulses per revolution on the output shaft. The output runs at 144 rpm. Parts are: ft 32293 for the motor and ft 31078 for the gearbox. Also here I use the quadratre decoder with hall sensors type AH3144E. The motor is controlled by the FPGA via a spi module where the TB6612 modules are located. A simple control algorithm without floating point calculations ensures good motor control. Some necessary parameters such as the brake zone distance and the motor speed in the control area are transmitted via the I2C connection between TXT and FPGA.

Let's have a look at the behavior of this motor setup:

Bild
HD on Flickr: https://www.flickr.com/photos/fotoopa_hs/50709659927

Overview of 7 cycles going from 1200 to 1000 and back. You see a short overshoot each time you reach the 1200 value but it is immediately adjusted away by the motor controller. The horizontal line after each cycle is a short delay timer that is set in the Robopro proramma. The outgoing motor speed is 144 rpm.
Let's have a look at how the regulation works in the zone with a small overshoot.:

Bild
HD on Flickr: https://www.flickr.com/photos/fotoopa_hs/50709659917

The recording time of the Picoscope is 20 sec but because of the deep buffer you can zoom in to the details. At any time you can read the motor position value, see the pwm control value, the deceleration zone and the ramp zone. When ascending to the value 1200 there is a short overshoot of 1 pulse in each cycle which is immediately adjusted to the correct end value of 1200. The detail list shows the 16 bit position values as 2 bytes, a high byte and a low byte. In the open office program, these values are converted to bcd so that they can be used directly in drawing up the diagram. The overshoot zone is marked, and you will see a little later the response of the controller to update the deviation.

As always with a quadrature decoder, the errors are never added to the multiple cycles. The maximum temporary error remains here 1 pulse.

Frans.

fotoopa
Beiträge: 312
Registriert: 05 Okt 2017, 11:44
Wohnort: Belgie
Kontaktdaten:

Re: Setup with the new DE0-Nano-Soc board.

Beitrag von fotoopa » 15 Jan 2021, 16:40

New project with the De0-Nano Soc board: "The Pic and place robot".

This pic and place robot consists of an 8x16 matrix where the balls can be placed. The drawing can be made by selecting 2 characters or by making a drawing. The basic software for this goes via the TXT controller with the Robopro software on the PC and with an I2C connection with the De0-Nano Soc module. On the PC you also get the layout of the 8x16 matrix but there is a limitation of 2 colors per LED (on/off). With the matrix neo-leds you can use 8 predefined colors. Colors are 24 bit values and these can also be set via the TXT. The neo-led matrix whose pixel is being processed can be changed in color. A ball that is applied can be seen on the matrix in this way. The table is moved by an X- and Y-axis motor. The placement of the balls is via the vertical Z axis. All motors are XM-motors and have a quadrature encoder disc with 48 pulses / revolution. This ensures that the position after calibration is always determined and remains correct. The balls are attached with a special header with servo and optical detector. Balls can be placed or taken away. In the ball header head there is also a sensor. This is used to scan and then display a pattern. You can also manually place balls. All balls can be taken away automatically afterwards.
The design is still under development. Mechanically the table is completely ready with the 3 axis control. Calibration is working and the table can already be controlled. Also the ball header is ready together with the built-in servo and optical sensor.

The next part of the project is to drive the Neo-led matrix. For that I have already drawn the flow diagram. Now I have to write the necessary code for the FPGA and the TXT.

Setup overview:

Bild
Flickr HD picture: https://www.flickr.com/photos/fotoopa_hs/50838002502

Flow diagram:

Bild
Flickr HD picture: https://www.flickr.com/photos/fotoopa_hs/50837919301

I now have to write the new the code for the TXT I2C communication. Then the feeding and draining of the balls must be made.
To be continued...

Benutzeravatar
PHabermehl
Beiträge: 2427
Registriert: 20 Dez 2014, 22:59
Wohnort: Bad Hersfeld

Re: Setup with the new DE0-Nano-Soc board.

Beitrag von PHabermehl » 15 Jan 2021, 18:42

What a cool idea. I like it, as usually ;-)

Kind regards
Peter
https://www.MINTronics.de -- der ftDuino & TX-Pi Shop!

viele Grüße
Peter

fotoopa
Beiträge: 312
Registriert: 05 Okt 2017, 11:44
Wohnort: Belgie
Kontaktdaten:

Re: Setup with the new DE0-Nano-Soc board.

Beitrag von fotoopa » 15 Jan 2021, 20:01

Thanks Peter!

Here is a PC TXT screen dump for the setting of both characters:

Bild

The neo-led matrix 8x16 consists of 2 modules:
ADA1487 Adafruit NeoPixel NeoMatrix 8x8 - 64 RGB LED Pixel Matrix.
Bild
On Flickr: https://www.flickr.com/photos/fotoopa_hs/50809775448

The housing is a 3D print compatible with Fischertechnik. Later I will take pictures of the capture head and the IR sensor. I will then also show how the ball holder works with the servo.

fotoopa
Beiträge: 312
Registriert: 05 Okt 2017, 11:44
Wohnort: Belgie
Kontaktdaten:

Re: Setup with the new DE0-Nano-Soc board.

Beitrag von fotoopa » 21 Jan 2021, 14:28

The neo-led matrix is connected. With only 3 wires, the 128 LEDs are controlled. Very practical and simple.
Refresch time leds: 256 Hz, 3900 usec.

Bild

HD on Flickr: https://www.flickr.com/photos/fotoopa_hs/50859461681

Frans.

fotoopa
Beiträge: 312
Registriert: 05 Okt 2017, 11:44
Wohnort: Belgie
Kontaktdaten:

Re: Setup with the new DE0-Nano-Soc board.

Beitrag von fotoopa » 25 Jan 2021, 18:41

Here a screen shot from the TXT program with Robopro to edit the neo-led matrix.
On the PC, the matrix can only contain 1 color. On the neo-led matrix different colors can be used. With this RoboPro program solution I can still determine the colors in the neo-led matrix. It was a bit of a search for a good solution to support both images.
Attached is a screen dump of the solution already worked out:

Bild
HD on Flickr: https://www.flickr.com/photos/fotoopa_hs/50874612672

The matrix can be loaded from the character rom generator but you can also create your own drawing. All goes over the I2C connection for certain function to perform. The program flow is completely on the PC. On the neo-led matrix you can see the colors you used. Most function already work. The RoboPro grogram gets pretty big because of the many individual LEDs that need to be controlled. Fortunately, it still works sufficiently smoothly on the PC with an I9 intel, 32Mb ram, and with the 2 big ( 1 + 4 TB) SSD disks.

Frans.

fotoopa
Beiträge: 312
Registriert: 05 Okt 2017, 11:44
Wohnort: Belgie
Kontaktdaten:

Re: Setup with the new DE0-Nano-Soc board.

Beitrag von fotoopa » 29 Jan 2021, 15:45

Detail Z axis module Pic and place unit.

Bild
HD on Flickr: https://www.flickr.com/photos/fotoopa_hs/50886968358

Bild
HD on Flickr: https://www.flickr.com/photos/fotoopa_hs/50886968328

Frans.

fotoopa
Beiträge: 312
Registriert: 05 Okt 2017, 11:44
Wohnort: Belgie
Kontaktdaten:

Re: Setup with the new DE0-Nano-Soc board.

Beitrag von fotoopa » 30 Jan 2021, 17:10

Once again, a small update:

Prototype 4x4 block for the matrix 8x16 with color disks. This way I can use colored discs with the pic and place robot. The color of the discs is displayed on the neo-pixel matrix. There is still a lot of work to be done for the supply and removal of the color discs. With an I2C color detector, I should be able to sort them and put them on the right place. As shown in the photo, you can transport the small discs quite easily, even vertically. This is because internally they contain a small neodym magnet. My pic and place header has already been modified to take these discs and place them in the 8x16 matrix. With RoboPro, I can make the color drawing. For the pixel color there is a choice of 8 predefined colors.

Bild
Hd on Flickr: https://www.flickr.com/photos/fotoopa_hs/50891094612

Example of the neo-pixel matrix. The drawing was done with the Robopro software. it remains difficult to get the right color shots of neo-led. This picture gives a good impression anyway.

Bild
Hd on Flickr: https://www.flickr.com/photos/fotoopa_hs/50891464746

So, I have a lot of work to do. But the prototype has been tested and the works can begin.
Frans.

fotoopa
Beiträge: 312
Registriert: 05 Okt 2017, 11:44
Wohnort: Belgie
Kontaktdaten:

Re: Setup with the new DE0-Nano-Soc board.

Beitrag von fotoopa » 24 Mär 2021, 14:45

Overview of the pic and place robot. The robot has to pick up the color disc and place it in the matrix according to a drawing. The input module for this is still under development, although most parts are ready. The pic and place table can also be controlled with the X,Y and Z axis. Once a drawing has been made, the robot must also be able to remove the colored blocks. For this purpose an output sorting module is provided. The color of the recorded color block is first measured and then disposed in the correct color box. If there is no color match then the last box (gray) is used. The sorting module also contains a small storage tube in which up to 10 blocks can fit for sorting. It is this sorting module that is now being tested here.

Bild
HD on Flickr: https://www.flickr.com/photos/fotoopa_hs/51068468492

Bild
HD on Flickr: https://www.flickr.com/photos/fotoopa_hs/51067672143

Bild
HD on Flickr: https://www.flickr.com/photos/fotoopa_hs/51068377481

Bild
HD on Flickr: https://www.flickr.com/photos/fotoopa_hs/51067672223

Bild
HD on Flickr: https://www.flickr.com/photos/fotoopa_hs/51067672183

Bild
HD on Flickr: https://www.flickr.com/photos/fotoopa_hs/50999192220

Detail of the TSC34725 I2C color sensor.

Bild
HD on Flickr: https://www.flickr.com/photos/fotoopa_hs/51068377376

The program runs under Robopro from Fischertechnik. All commands go over the I2C connection to the DE0-nano soc module. This contains the necessary hardware to control all interfaces. The TCS34725 color sensor comes from the lib at Fischertechnik programs. Here I did a modification to the reading method of the color sensor. This makes the data retrieved in 371 usec while otherwise it takes up to more than 25 msec. The color of the discs is determined from the calculated color value and brightness. On the sensor module there is a LED that is activated just before the measurement. The distance from the sensor to the measuring surface is approximately 2mm. If no block is present then the value of the underlying gray conductor is measured. This makes it fairly easy to measure empty supply.
Overview of the values:

Code: Alles auswählen

color disk         K value              W value        servo nr        servo pos

Blue               12000 - 15000       540 - 600         3                270
Red                2100 - 2200         860 - 890         2                309
empty              5400 - 5500         520 - 540         --               calib
Green              6700 - 6900        1100 - 1250        5                190
Yellow             2900 - 3000        1500 - 1750        4                228
White              5800 - 5900        4900 - 5200        1                348

color sensor position: 146
Max chain pos:         384
A short video (2min-22sec):
Flickr: https://www.flickr.com/photos/fotoopa_hs/50999196980
Yuotube: <a href="https://youtu.be/1eew515f9eg" rel="noreferrer nofollow">youtu.be/1eew515f9eg</a>

Frans.

Benutzeravatar
MasterOfGizmo
Beiträge: 2720
Registriert: 30 Nov 2014, 07:44

Re: Setup with the new DE0-Nano-Soc board.

Beitrag von MasterOfGizmo » 24 Mär 2021, 14:52

I like how half of the parts in your setups are 3d printed. Seems like you are just printing any part you have a spontaneous need for. Like printing is faster than ordering ...
Arduino für fischertechnik: ftDuino http://ftduino.de, ftDuino32 http://ftduino.de/32

fotoopa
Beiträge: 312
Registriert: 05 Okt 2017, 11:44
Wohnort: Belgie
Kontaktdaten:

Re: Setup with the new DE0-Nano-Soc board.

Beitrag von fotoopa » 24 Mär 2021, 16:53

MasterOfGizmo hat geschrieben:
24 Mär 2021, 14:52
Seems like you are just printing any part you have a spontaneous need for.
Yes 3D printing is also a part of the hobby just like electronics. I have over 10000 FT parts. Sometimes with one piece to print you can replace a whole series of existing FT blocks giving greater stability. For everything with Hall sensors I also have to print the parts myself. Designing these parts is a lot of fun. The little colored disks contain internally a small Neodym magnet. Working with magnets gives you many possibilities. Together with a servo control you have almost unlimited possibilities.
For the transportation of the discs, I will indeed need many new 3D printing parts. The gray track comes from the FT boxes. For the input modules, 5 pipes are provided to store 50 pieces of colored discs.
Later, the output module will be fed back to the input module. Thus, all the discs would be sorted back into the stock. This setup is primarily a test setup.

Frans

fotoopa
Beiträge: 312
Registriert: 05 Okt 2017, 11:44
Wohnort: Belgie
Kontaktdaten:

Re: Setup with the new DE0-Nano-Soc board.

Beitrag von fotoopa » 15 Apr 2021, 13:20

A view inside the box with the DE0-nano soc module. I just purchased a 64MB flash module and it needs to be mounted in the box. The flash module is controlled via SPI. There are still plenty of free I/O pins available. Now I have to read the datasheets and write the verilog driver. This additional flash memory will be used to store all drawings made for the 8x16 color matrix. Through the TXT via I2C, the children can then enter their own drawing, save it and read it again later. I use 5 colors for the neo leds pixels.

Bild

Hd picture on Flickr: https://www.flickr.com/photos/fotoopa_hs/51116971018

Frans.

atzensepp
Beiträge: 656
Registriert: 10 Jul 2012, 21:40
Wohnort: Uttenreuth

Re: Setup with the new DE0-Nano-Soc board.

Beitrag von atzensepp » 15 Apr 2021, 23:57

I wanted also to try out FPGAs. However the tool chain and learning curve prevented me from doing it. Also the logic levels.
So still sticking with Arduino and STM 32 Nucleo.

You are making your magnetic encoders using hall sensors and neodym magnets.
Have you thought about using a magnetic encoder module such as
"RMB14 Rotary Magnetic Encoder Module" (14-Bit) resolution or "AS5270 Magnetic Angular Position Sensor" (14-Bit). I guess you need less Neodym Magnets.

Wondering if an optical encoder with encoder disk printed on transparent would work too.

fotoopa
Beiträge: 312
Registriert: 05 Okt 2017, 11:44
Wohnort: Belgie
Kontaktdaten:

Re: Setup with the new DE0-Nano-Soc board.

Beitrag von fotoopa » 16 Apr 2021, 09:54

atzensepp hat geschrieben:
15 Apr 2021, 23:57
I wanted also to try out FPGAs. However the tool chain and learning curve prevented me from doing it. Also the logic levels.
So still sticking with Arduino and STM 32 Nucleo.
Yes the learning curve for FPGA is steep. Also, the verilog programming language is used much less than the C language. This prevents many hobbyists from using FPGAs. You will find fewer examples and lib's, you will have to write it yourself.
You are making your magnetic encoders using hall sensors and neodym magnets.
Have you thought about using a magnetic encoder module such as
"RMB14 Rotary Magnetic Encoder Module" (14-Bit) resolution or "AS5270 Magnetic Angular Position Sensor" (14-Bit). I guess you need less Neodym Magnets.
With the Neodym magnets, you have great flexibility. They cost very little, I pay €0.13 each D2xL3mm. My latest designs contain 8 or 12 of them for an encoder disk. The drawing (fusion 360) and 3D printing (FlashForge 3D printer) of the encoder disk is done tremendously fast. You fit your design into the FT grid. Hall chips are insensitive to light and dust. With optical encoders you do have to take this into account and the electronics are certainly not smaller. Hall chips have a large voltage range from 4 to 24V and are even resistant to wrong polarization.
Wondering if an optical encoder with encoder disk printed on transparent would work too.
Yes I don't see why it wouldn't work. You have to be careful with light incidence and make sure that your print of the disc is not damaged by fretting.

Unfortunately, I only use half of the FPGA chip. The other half is for Linux and communications. But I have no experience and knowledge with C. Having to learn everything now is not possible. I am getting old (78), my eyes are failing, and my memory can only remember a few lines of code. I don't drive my car anymore, travel is also no longer possible.
However, the benefits of an FPGA are enormous. You have no timing problems due to other tasks that must run simultaneously. You have almost 100 I/O pins that are all equivalent. I have no interrups to worry about. And speed is not an issue at all.

If I have to order parts then not in China, I only work with known suppliers who preferably deliver me the parts within 24 hours. Yes it is more expensive but our economy is better than the free delivery from China with unstable specs of the components.

Update:
Picture off the flashboard into the DE0-nano soc module. I had to apply the 3v3 voltage via a wire, the rest could be applied directly to the existing pins. The GND pin is also modified on the carrier pcb. Now I need to define the signals in the FPGA.
Bild
HD picture on Flickr: https://www.flickr.com/photos/fotoopa_hs/51118951766

Frans.

atzensepp
Beiträge: 656
Registriert: 10 Jul 2012, 21:40
Wohnort: Uttenreuth

Re: Setup with the new DE0-Nano-Soc board.

Beitrag von atzensepp » 16 Apr 2021, 21:59

Hello Frans,

the FPGA stuff looks like it is lots of fun and what you accomplished with it is really great!
Your "fluent" use of modern technology (3d-printing, FPGA) is amazing.
I would have no idea how to do the integration between the FPGA and an FT-controller. This is hard engineering stuff.
Is there already publication about your work?

That you are doing this proofs that age is not an obstacle to learn new things and to be very creative.

Florian

Antworten