But stepper motors, are usually used with microcontrollers, which can then calculate the exact pulse signals to send to the stepper motors.
Exactly, buy we don't want to mess around with microcontrollers just yet because, as I've mentioned before, we are in our first semester and we would love to do it this way because it is teaching us a lot. The pulses we'll generate with those 2 timers 555 can, as for sure you already know, vary base on the Duty cycle (which is also mentioned in the pdf you sent me (
https://www.cs.york.ac.uk/micromouse/Papers/Robot_project_jaseung_.pdf - Page 3).
We can play around with the resistors values to do that. If I'm wrong, please do correct me.
Don't forget that DC motors, can be used with gearing and/or gear boxes (you can buy them ready assembled, as single units, from many electronic suppliers, at quite low prices, for many of them). If you need more torque, with some loss of max RPM.
True, if we don't find a suitable Stepper motor and decided to use a DC one, we might have to come back to this and figure things out.
What you seem to be missing, is any kind of RATE of correction. Which a purely analog or microcontroller solution would have given you. Without it, you may find that the robot is too unstable (but it MIGHT work).
Completely true, that is one of my main concerns right now, but we just started or semester 3 weeks ago and we are learning little by little, for now we are aiming to the best-case scenario, of course it will have problems and we'll have to solve every and each one of them to make it better. We have 3 more months to build something great.
Now, i'm intrigued by the
"purely analog or microcontroller solution" could you give me some examples on this? It's beyond my current knowledge and now I have to study about this in order to try to implement it in our L.F. This is the idea, to have feedback and improve every single time.
What you seem to be showing is something which is either on or off, with no in-betweens. I suspect that would not work very well, as it could easily be unstable, and have other problems.
Having a quick second glance on your truth table, I can see possible problems with it (ignoring that I'm not sure that it is the best, way, anyway).
It only seems to define the 6 logic states, you THINK, will always happen. In practice, it may well see, various versions of the SIXTEEN possible logic states, of the four sensor inputs.
Ideally you need to control/define those other ten, unintended logic states, as regards what they will do. Otherwise, you may have problems.
E.g. It could keep the last valid known "legal" state, until the next set of "correct" logic states are received.
As it is, the other ten states, will produce undefined behavior, which is not so good. E.g. It may result in it moving in completely the wrong direction (because of a slight bump in the track, causing a blip on the sensors), which may make it completely lose sight of the line it is suppose to be following and/or worsen the quality of the control.
As it stands you are relying on 100% perfect sensors (and track, which may have slight creases, distortions and dirt etc on it), all of the time. Room lighting, may also affect your sensors. E.g. There may be too much sunlight reflected onto parts of the track, invalidating your truth table, and causing your thing to go out of control.
True, we just did 6 in order to explain the other team-members what we are doing, we are 5 and only 2 of us have an idea about this and the others don't. But I will do the other states for sure because that will decrease the instability of the LF because will know what to do in every possible scenario.
Would a VERY slow progress, and wobbly solution, meet your needs ?
Or would you prefer something which works as well as possible, e.g. Quickest ?
I think we are aiming to a reliable solution, we don't need something fast, although we've thought about controlling the velocity in turns and thinks like that but that might come later, that's the reason why we are doing a Modular project, in order to update each module as we want while we keep learning.
EDIT:
Is the track layout, likely to be simple and straight forward ?
Or are they going to give it various, very tight turns, and twists and things, to try and catch the robot(s) out ?
The teacher told us that the max angle we'll have to deal with is 45° but we are targeting a 90° angle turn and we asked him to let us make or own track layout which is as follows:
http://prntscr.com/cbj33lEDIT2:
On reflection, I might be, being overly critical.
Please keep doing it, that's what we need and we thank you for that because you are giving positive feedback and that helps us to improve. Again, thank you very much!
It is possible that the problem is simple enough, and if you don't need particularly spectacular results. A simple solution, may work for it. I'm NOT 100% sure, either way.
In fact it is, as I said, we only must deal with a 45° angle turn but we want more and better because is the best way to learn.
I think if it is TOO unstable, it will lose track of the line, completely. So if it is TOO simple, it probably won't work.
True that. That's why I have to define all the 16 logic gates, that will provide more reliability.
Also there is probably noise/errors on some of the signals, some of the time (e.g. Due to vibrations and unevenness in the surfaces). A purely digital solution, may not cope with that, which could then end up losing control.
Another yet really interesting point. What would you recommend in order to deal with this possible problem?
E.g. A Microcontroller, would have much more capability, to solve any issues and short comings in your control strategy.
As far as I know, and I apologize for my ignorance, a Microcontroller uses programs based on C (or other language) to do what we are trying to achieve with logic gates. Can you give us more insights on this subject?
Again, we really appreciate your time and kindness!
Leaving aside the advisability or not of implementing a line follower in 'bang-bang' logic, to implement the logic functions you posted:
M1 = A' B' C D + A' B C' D' + A' B C' D;
M2 = A' B' C D + A B' C' D' + A B' C D';
only needs three 74 series logic ICs done with classic gates.
74xx04 Hex Inverter
74xx02 Quad 2-Input NOR
74xx11 Triple 3-Input AND
Thanks for your reply!
I haven't thought about that 3-input AND which could eventually be used in our circuit, I'll read more about it and see if we have those IC in our city.
However the logic diagram that implements it is a spaghetti mess.
Indeed, it is. But we'll try to deal with it
(All Logic wrangling done with Logic Friday
To get it down to 3 chips, I had to constrain its Map to Gates solver to only use inverters, 2 input NORs, and 2 & 3 input ANDs, then manually swap out two 2 input ANDs - one for a three input one and the other by DeMorgan using a NOR and inverters. .lfcn file attached)
Here begins my confusion, what does "to constrain its Map to Gates solver" mean?
IMHO if you need to do this in 74 series logic, use two 3 to 8 line decoders to fully decode the four input bits to 16 outputs representing all the possible 4 input AND terms then OR together the individual AND terms you need. That way its *MUCH* easier to patch if you need to change the logic.
No idea about what a "3 to 8 line decoder" is, I'll have to read about it, any recommended sites? Or could you explain a bit more the theory or why would I need to "decode the four input bits to 16 outputs"? What do those 16 outputs mean? IS it the 16 logic states? OR Am I use mising things up?
You could use a 74xx238 decoder with active high outputs and a 74xx32 quad OR, cascading two gates to get a 3 input OR, but it would probably be better to apply DeMorgan and use the more common 74xx138 decoder with active low outputs and a 74xx10 triple three input NAND to 'OR' the terms together. That leaves you with a spare gate that can be used to implement another function of up to three terms.
I'll come back to this once I've understood the previous part.
Again, thank you so much to both of you.
God bless you!