Page 1 of 1
NXC: Sensor port as I/O pin
Posted: 21 Feb 2011, 23:47
by madscripter
Hi,
i am trying to use one of the NXT sensorports as an out pin. My idea was to use out signal with an opto-isolator to comtrol a second cicuit which runns two motors.(And as the nxt battery run down fast i didn't want to use them to power these motors).The Problem is that I still need to control them.
And as i am a complete newbee to circuits and the NXT, that is were the problems begin:
-fist of all id dont even know the layout of the NXT port
(somthing like which wire is GND for 9v for 5V where which Vcc+ is and where the logical pins are)
-second point is how to control the logical pins
I saw the
Code: Select all
void SetSensorDigiPinsDirection(const byte port,const byte & direction)
void SetSensorDigiPinsOutputLevel(const byte port,const byte & outputLevel)
void SetSensorDigiPinsStatus(const byte port, const byte & status)
but i cant really understand these commands and as I tried them(I put them into a loop a wrote down all the currents between all the pins)
i found something aubout thaat I had to set the sensor to custom mode, but the commands I found didnt really help
there was nothing like
Code: Select all
void SetSensorCustom( const byte port)
but only
Code: Select all
void SetCustomSensorActiveStatus ( const byte port, const byte & activeStatus )
void SetCustomSensorPercentFullScale ( const byte port, const byte & pctFullScale )
void SetCustomSensorZeroOffset ( const byte port, const int & zeroOffset )
i dont even know what offset is
Julian
Re: NXC: Sensor port as I/O pin
Posted: 22 Feb 2011, 01:02
by nxtreme
As far as hardware goes, check out the Extreme NXT book. It's a great book (I have the first and second edition) and very cheap (~$6 US)
from Amazon.com, if you live in Canada or the US. It explains the basics (and some of the not-so-basics) of interfacing with the NXT.
Re: NXC: Sensor port as I/O pin
Posted: 22 Feb 2011, 02:17
by mattallen37
If you want to make a motor multiplexer, and you don't care about PWM (speed control), try using a PCF8574, and as many H-Bridges as you need motors. I have made a motor multiplexer before using one PCF8574, and one SN754410. It was able to control two motors, and was really easy to setup and program for.
Re: NXC: Sensor port as I/O pin
Posted: 22 Feb 2011, 21:13
by madscripter
nxtreme wrote:As far as hardware goes, check out the Extreme NXT book. It's a great book (I have the first and second edition) and very cheap (~$6 US)
from Amazon.com, if you live in Canada or the US. It explains the basics (and some of the not-so-basics) of interfacing with the NXT.
I allready have the NXT EXtreme book but I had forgotten about it, because when i began using the NXT (about 3 months ago) i was more interesten in coding and undestanding NXC. And as that book does not contain that much code(in special not much of NXC code) and because you have to understand electrics i didnt really read it until now. So i found the pin layoutthat I needed (pin5 and 6 green and yellow are the logic pinsand GND should be 3(red))
sothank you of reminding me of this great book
mattallen37 wrote:If you want to make a motor multiplexer, and you don't care about PWM (speed control), try using a PCF8574, and as many H-Bridges as you need motors. I have made a motor multiplexer before using one PCF8574, and one SN754410. It was able to control two motors, and was really easy to setup and program for.
well yes I do want to controll two motor and dont care about PWD(that was the thing with the length of the pusle right?) but I didnt want to build the
constuction, because using an relais seems much easier and I didnt want to start ICs as a new project because this will take a lot of time and be quite expensive
and the competition is this sunday(it is just a local set-up competition to see if everything works and what the other teams have built)
but I still need to know how the software works
Code: Select all
void SetSensorType (port,SENSOR_TYPE_CUSTOM)
i guess this will get the sensor to custom mode
and this will define if it is input or output
Code: Select all
void SetSensorDigiPinsDirection(const byte port,const byte & direction)
in the example forom john i saw that the output level was set to 100 so i guess it is 100% of 3.3V
Code: Select all
SetSensorDigiPinsOutputLevel(const byte port,const byte & outputLevel)
can this be?
Re: NXC: Sensor port as I/O pin
Posted: 22 Feb 2011, 21:49
by mattallen37
Actually, pin five and six are yellow and blue. Pin 4 is green (4.7v supply). On the sensor ports, pins two AND three (black and red) are GND.
PWM, "pulse width modulation", is a (usually) fixed frequency square wave, and the duty cycle is adjustable from 0-100% (thus varying the speed of a motor, or the brightness of an LED...).
Assuming "relais" means "relay", don't use them. Unless you are keen about diodes, transistors, current... it could be very dangerous to your NXT. If you were considering relays, then you must not need direction control, right? In that case, just a single transistor and diode per motor should be enough. An NPN transistor (a very common type, and one that should be suitable for your application) is sort of like a relay, where you have a "coil" (gate) a voltage input (collector), and an output (emitter). Using an H-Bridge IC though, would be a lot more simple (you would just need to wire the IC properly, which is pretty straight forward).
IMO, IC's are really easy to use, you just need a solderless breadboard (for prototyping/temporary use). Also, most general purpose IC's are pretty cheap. I have gotten the quad half H-Bridges (two H's in one IC) for $1.75 US each (I have gotten PCF8574's for the same price).
AS far as controlling the NXT pins directly, I haven't done it yet.
BTW, isn't NXC not allowed for the competitions?
Re: NXC: Sensor port as I/O pin
Posted: 22 Feb 2011, 22:26
by madscripter
well the problem was that the nxt only gives 110mA of power so and as i didnt want to fry the nxt(and save the nxts battery) i decided to put the motors i want to control in a different circuit. I was actually thinking about using an optical relay wich consists of a diode and an photo transistor, or a photoresistor.
and as far as I have undestood a relay alway inducts that the control circuit and the circuit that has the controled units have the same power suply, in this case it doesent help much as the motors need a lot of power.
but i dont really understand electronics...
madscripter wrote:IMO, IC's are really easy to use, you just need a solderless breadboard (for prototyping/temporary use). Also, most general purpose IC's are pretty cheap. I have gotten the quad half H-Bridges (two H's in one IC) for $1.75 US each (I have gotten PCF8574's for the same price).
and i think there is the same problem with that that all works with the same power suly
mattallen37 wrote:
BTW, isn't NXC not allowed for the competitions?
i think this imitation is only for NXG last year some peole from my school took part in the competition last year and they were using robotc so it shouldnt be a problem
mattallen37 wrote:
AS far as controlling the NXT pins directly, I haven't done it yet.
maybee John has an idea
Re: NXC: Sensor port as I/O pin
Posted: 23 Feb 2011, 00:06
by mattallen37
madscripter wrote:well the problem was that the nxt only gives 110mA of power so and as i didnt want to fry the nxt(and save the nxts battery) i decided to put the motors i want to control in a different circuit. I was actually thinking about using an optical relay wich consists of a diode and an photo transistor, or a photoresistor.
and as far as I have undestood a relay alway inducts that the control circuit and the circuit that has the controled units have the same power suply, in this case it doesent help much as the motors need a lot of power.
but i dont really understand electronics...
You can use a separate power supply. An "optical relay" (actually called an "optoisolator"), would serve no purpose in this case. There is no need for isolation, you just need to be careful not to connect the nxt supply to your power supply (Gnd from both should be connected as a reference point).
madscripter wrote: mattallen37 wrote:IMO, IC's are really easy to use, you just need a solderless breadboard (for prototyping/temporary use). Also, most general purpose IC's are pretty cheap. I have gotten the quad half H-Bridges (two H's in one IC) for $1.75 US each (I have gotten PCF8574's for the same price).
and i think there is the same problem with that that all works with the same power suly
No, you can use the NXT power supply for the PCF8574, and the other supply (higher voltage and current) to power the H-Bridges (I know it, I have done it myself).
madscripter wrote:i think this imitation is only for NXG last year some peole from my school took part in the competition last year and they were using robotc so it shouldnt be a problem
...
NXG? I have never heard of that one. I know that ROBOTC is allowed, but NXC is not (I have never read the rules, I have just heard so).
Re: NXC: Sensor port as I/O pin
Posted: 23 Feb 2011, 04:25
by afanofosc
I think I wrote something about this here a while back. Does this help?
http://sourceforge.net/apps/phpbb/mindb ... tion#p2305
I need to update the help examples. If you come up with some functional code I would be happy to use your sample in the help files.
John Hansen
Re: NXC: Sensor port as I/O pin
Posted: 01 Mar 2011, 01:43
by madscripter
I tried a lot and found out that the
command changes the current on the logical pins 5 and 6
but there wasn't enogh power to use a transitor with it so i found something verry interesting
Code: Select all
SetSensorType(IN_X,SENSOR_TYPE_LIGHT_ACTIVE);
will set pin 5 to a bit more than 3.15 V and give it enogh power to use a transitor with it
Code: Select all
SetSensorType(IN_X,SENSOR_TYPE_LIGHT_INACTIVE);
will turn pin 5 to 0V
I verry sorry I didn't sepend more time on finding out exactly how all the DigiPin commands work but this trick helped me so I hpe it will help others as wel
Re: NXC: Sensor port as I/O pin
Posted: 01 Mar 2011, 01:55
by mattallen37
Almost any amount of power is enough to operate a transistor. I have made circuits that are so sensitive, that placing one finger to supply, and a finger on the other hand to a transistor base, would trigger the circuit. The transistors weren't special ones either, they were 3904's. I only used three or four. Sensitivity all really depends on your circuit design.
I am glad you got it working.