Electronics-Related.com
Forums

BLDC controller and ATF16V8B/GAL16V8B/PAL16V8B

Started by Unknown September 17, 2014
BLDC controller:

http://173.224.223.62/motor

I am thinking about moving the PIC 3 feet away (closer to the control panel=
) from this board.  There are 6 outputs in 6 possible states.  Each pair of=
 MOSFET can be in HI, LO or KILL (both HI and LO) states.  I can add an I/O=
 expander or shift register to minimize the connections, but that increase =
the chance of KILL states due to communication error.  So, i am thinking ab=
out a 3 to 6 decoder like ATF16V8B (EE) or even GAL16V8B/PAL16V8B.  I need =
the EE version just to develop the logic, but don't really want it changeab=
le or erasable anyway.  Or just buy enough GAL16V8B/PAL16V8B to burn and du=
mp them.

I read that these are old chips and moderm USB programmer might not handle =
them well.  Can someone recommend a cheap programmer for them?
On Wed, 17 Sep 2014 08:57:20 -0700, edward.ming.lee wrote:

> BLDC controller: > > http://173.224.223.62/motor > > I am thinking about moving the PIC 3 feet away (closer to the control > panel) from this board. There are 6 outputs in 6 possible states. Each > pair of MOSFET can be in HI, LO or KILL (both HI and LO) states. I can > add an I/O expander or shift register to minimize the connections, but > that increase the chance of KILL states due to communication error. So, > i am thinking about a 3 to 6 decoder like ATF16V8B (EE) or even > GAL16V8B/PAL16V8B. I need the EE version just to develop the logic, but > don't really want it changeable or erasable anyway. Or just buy enough > GAL16V8B/PAL16V8B to burn and dump them. > > I read that these are old chips and moderm USB programmer might not > handle them well. Can someone recommend a cheap programmer for them?
You don't say anything about where you want to make the split, or provide a schematic (or, for that matter, a domain name!) If I felt I needed to have the driver remote from the motor, I would put all the MOSFETs on the board, and run three wires to the motor. -- Tim Wescott Wescott Design Services http://www.wescottdesign.com
On Wednesday, September 17, 2014 10:32:33 AM UTC-7, Tim Wescott wrote:
> On Wed, 17 Sep 2014 08:57:20 -0700, edward.ming.lee wrote:
=20
> > BLDC controller: >=20 > > http://173.224.223.62/motor >=20 > > I am thinking about moving the PIC 3 feet away (closer to the control p=
anel) from this board. There are 6 outputs in 6 possible states. Each pai= r of MOSFET can be in HI, LO or KILL (both HI and LO) states. I can add an= I/O expander or shift register to minimize the connections, but that incre= ase the chance of KILL states due to communication error. So, i am thinkin= g about a 3 to 6 decoder like ATF16V8B (EE) or even GAL16V8B/PAL16V8B. I n= eed the EE version just to develop the logic, butdon't really want it chang= eable or erasable anyway. Or just buy enough GAL16V8B/PAL16V8B to burn and= dump them.
>=20 > > I read that these are old chips and moderm USB programmer might not han=
dle them well. Can someone recommend a cheap programmer for them?
>=20 > You don't say anything about where you want to make the split,=20
Replace the 28 pin PIC with the 16V8 and put another PIC (probably 64 pins)= 3 feet away.
> or provide a schematic=20
I don't have one. Just gerber it out straight.
> (or, for that matter, a domain name!)
It's numerical domain, just as good as ASCII domain. This is only for a few= private viewers anyway. The real site will be in a different part of the = world.
> If I felt I needed to have the driver remote from the motor, I would put =
all the MOSFETs on the board, and run three wires to the motor. But that would be upto 50A on 3 feet of very thick cables. We want to put = this power module as close to the motor as possible and just run 3 thin con= trol signals 3 feet away. BTW, some of these *16V8* needs 24V to program. Hopefully, i can get some = students to take on the programmer project.
On Wed, 17 Sep 2014 10:51:17 -0700, edward.ming.lee wrote:

> On Wednesday, September 17, 2014 10:32:33 AM UTC-7, Tim Wescott wrote: >> On Wed, 17 Sep 2014 08:57:20 -0700, edward.ming.lee wrote: > >> > BLDC controller: >> >> > http://173.224.223.62/motor >> >> > I am thinking about moving the PIC 3 feet away (closer to the control >> > panel) from this board. There are 6 outputs in 6 possible states. >> > Each pair of MOSFET can be in HI, LO or KILL (both HI and LO) states. >> > I can add an I/O expander or shift register to minimize the >> > connections, but that increase the chance of KILL states due to >> > communication error. So, i am thinking about a 3 to 6 decoder like >> > ATF16V8B (EE) or even GAL16V8B/PAL16V8B. I need the EE version just >> > to develop the logic, butdon't really want it changeable or erasable >> > anyway. Or just buy enough GAL16V8B/PAL16V8B to burn and dump them. >> >> > I read that these are old chips and moderm USB programmer might not >> > handle them well. Can someone recommend a cheap programmer for them? >> >> You don't say anything about where you want to make the split, > > Replace the 28 pin PIC with the 16V8 and put another PIC (probably 64 > pins) 3 feet away. > >> or provide a schematic > > I don't have one. Just gerber it out straight. > >> (or, for that matter, a domain name!) > > It's numerical domain, just as good as ASCII domain. This is only for a > few private viewers anyway. The real site will be in a different part > of the world. > >> If I felt I needed to have the driver remote from the motor, I would >> put all the MOSFETs on the board, and run three wires to the motor. > > But that would be upto 50A on 3 feet of very thick cables. We want to > put this power module as close to the motor as possible and just run 3 > thin control signals 3 feet away. > > BTW, some of these *16V8* needs 24V to program. Hopefully, i can get > some students to take on the programmer project.
If you're going to have a board with a chip and MOSFETs on it there anyway, why put the whole motor drive board there? Make it talk serial on RS-422, serial on RS-485, or CAN. Then your control panel can just talk to the motor controller, or you can have a translator at the control panel. Note that motor controllers of this type can tolerate wiring inductance on the motor side much more easily than they can on the power side. Basically, every time you shut off a transistor to the motor, the power wiring will want to give you an inductive spike. So if your power wires are traveling any great distance think really hard about how much capacitive bypassing you put on them. Just model a half-bridge with inductances on each side (to model the power wiring and the motor with it's wiring) and you'll see what I mean. -- Tim Wescott Wescott Design Services http://www.wescottdesign.com
On Wednesday, September 17, 2014 11:03:58 AM UTC-7, Tim Wescott wrote:
> On Wed, 17 Sep 2014 10:51:17 -0700, edward.ming.lee wrote: >=20 > > On Wednesday, September 17, 2014 10:32:33 AM UTC-7, Tim Wescott wrote: > >> On Wed, 17 Sep 2014 08:57:20 -0700, edward.ming.lee wrote: >=20 > >> > BLDC controller: >=20 > >> > http://173.224.223.62/motor >=20 > >> > I am thinking about moving the PIC 3 feet away (closer to the contro=
l panel) from this board. There are 6 outputs in 6 possible states. Each p= air of MOSFET can be in HI, LO or KILL (both HI and LO) states. I can add a= n I/O expander or shift register to minimize the connections, but that incr= ease the chance of KILL states due to communication error. So, i am thinki= ng about a 3 to 6 decoder like ATF16V8B (EE) or even GAL16V8B/PAL16V8B. I = need the EE version just to develop the logic, butdon't really want it chan= geable or erasable anyway. Or just buy enough GAL16V8B/PAL16V8B to burn an= d dump them.
>=20 > >> > I read that these are old chips and moderm USB programmer might not =
handle them well. Can someone recommend a cheap programmer for them?
>=20 > >> You don't say anything about where you want to make the split, >=20 > > Replace the 28 pin PIC with the 16V8 and put another PIC (probably 64 p=
ins) 3 feet away.
>=20 > >> or provide a schematic >=20 > > I don't have one. Just gerber it out straight. >=20 > >> (or, for that matter, a domain name!) >=20 > > It's numerical domain, just as good as ASCII domain. This is only for a=
few private viewers anyway. The real site will be in a different part of = the world.
>=20 > >> If I felt I needed to have the driver remote from the motor, I would p=
ut all the MOSFETs on the board, and run three wires to the motor.
>=20 > > But that would be upto 50A on 3 feet of very thick cables. We want to =
put this power module as close to the motor as possible and just run 3 thin= control signals 3 feet away.
>=20 > > BTW, some of these *16V8* needs 24V to program. Hopefully, i can get s=
ome students to take on the programmer project.
>=20 > If you're going to have a board with a chip and MOSFETs on it there anywa=
y, why put the whole motor drive board there? Make it talk serial on RS-42= 2, serial on RS-485, or CAN. Then your control panel can just talk to the = motor controller, or you can have a translator at the control panel. That's plan A, which requires two micros. Plan B is to try to eliminate on= e of them.
> Note that motor controllers of this type can tolerate wiring inductance o=
n the motor side much more easily than they can on the power side. Basical= ly, every time you shut off a transistor to the motor, the power wiring wil= l want to give you an inductive spike. So if your power wires are travelin= g any great distance think really hard about how much capacitive bypassing = you put on them. That why we want to put in a 16V8 that can't crash. Hopefully, the inducti= ve pickup will only get 000 or 111, which are invalid states. We only need= 6 valid states.
> Just model a half-bridge with inductances on each side (to model the powe=
r wiring and the motor with it's wiring) and you'll see what I mean. Yes, i believe you.
Den onsdag den 17. september 2014 17.57.20 UTC+2 skrev edward....@gmail.com=
:
> BLDC controller: >=20 >=20 >=20 > http://173.224.223.62/motor >=20 >=20 >=20 > I am thinking about moving the PIC 3 feet away (closer to the control pan=
el) from this board. There are 6 outputs in 6 possible states. Each pair = of MOSFET can be in HI, LO or KILL (both HI and LO) states. I can add an I= /O expander or shift register to minimize the connections, but that increas= e the chance of KILL states due to communication error. So, i am thinking = about a 3 to 6 decoder like ATF16V8B (EE) or even GAL16V8B/PAL16V8B. I nee= d the EE version just to develop the logic, but don't really want it change= able or erasable anyway. Or just buy enough GAL16V8B/PAL16V8B to burn and = dump them.
>=20 >=20 >=20 > I read that these are old chips and moderm USB programmer might not handl=
e them well. Can someone recommend a cheap programmer for them? I can't read what those drivers are, but most of them will not let you tur= n on both the top an bottom fet at the same time.=20 you'll need inputs for either either phase voltages or hall sensors to=20 run a BLDC motor=20 why not do like everyone else does, put an mcu on there and you're done -Lasse
On Wednesday, September 17, 2014 12:36:51 PM UTC-7, Lasse Langwadt Christen=
sen wrote:
> Den onsdag den 17. september 2014 17.57.20 UTC+2 skrev edward....@gmail.c=
om:
>=20 > > BLDC controller: >=20 > > http://173.224.223.62/motor >=20 > > I am thinking about moving the PIC 3 feet away (closer to the control p=
anel) from this board. There are 6 outputs in 6 possible states. Each pai= r of MOSFET can be in HI, LO or KILL (both HI and LO) states. I can add an= I/O expander or shift register to minimize the connections, but that incre= ase the chance of KILL states due to communication error. So, i am thinkin= g about a 3 to 6 decoder like ATF16V8B (EE) or even GAL16V8B/PAL16V8B. I n= eed the EE version just to develop the logic, but don't really want it chan= geable or erasable anyway. Or just buy enough GAL16V8B/PAL16V8B to burn an= d dump them.
>=20 > > I read that these are old chips and moderm USB programmer might not han=
dle them well. Can someone recommend a cheap programmer for them?
>=20 > I can't read what those drivers are, but most of them will not let you t=
urn on both the top an bottom fet at the same time.=20 Most have independent HI and LO inputs and outputs. Even if the gate drive= r can prevent it, the controller should not try to test it. =20
> you'll need inputs for either either phase voltages or hall sensors to ru=
n a BLDC motor=20 Signal and sensors can run on thinner wires or even opto-isolated. Phased = power lines cannot be opto-isolated.
> why not do like everyone else does, put an mcu on there and you're done
That's plan A. Plan B is micro + 16V8. Once we have it developed, we can = order the part pre-programmed. The problem is getting to that point.
=20
> > > BLDC controller: > > > http://173.224.223.62/motor
=20
> > > I am thinking about moving the PIC 3 feet away (closer to the control=
panel) from this board. There are 6 outputs in 6 possible states. Each p= air of MOSFET can be in HI, LO or KILL (both HI and LO) states. I can add = an I/O expander or shift register to minimize the connections, but that inc= rease the chance of KILL states due to communication error. So, i am think= ing about a 3 to 6 decoder like ATF16V8B (EE) or even GAL16V8B/PAL16V8B. I= need the EE version just to develop the logic, but don't really want it ch= angeable or erasable anyway. Or just buy enough GAL16V8B/PAL16V8B to burn = and dump them.
>=20 > > > I read that these are old chips and moderm USB programmer might not h=
andle them well. Can someone recommend a cheap programmer for them?
>=20 > > I can't read what those drivers are, but most of them will not let you=
turn on both the top an bottom fet at the same time.=20
>=20 > Most have independent HI and LO inputs and outputs. Even if the gate dri=
ver can prevent it, the controller should not try to test it.
>=20 > > you'll need inputs for either either phase voltages or hall sensors to =
run a BLDC motor=20
>=20 > Signal and sensors can run on thinner wires or even opto-isolated. Phase=
d power lines cannot be opto-isolated. There will be only one signal input, with frequency controlled by micro or = 555. It seems that there are bits and pieces of information on the Internet to p= rogram the Gal16V8. First thing is to write the logic equations. Haven't d= one this for a long time. Am i doing it right? We want to program the chip as such: ; +-----------------------------------------------------------+ ; | VCC | VCC | AHI | ALO | BHI | BLO | CHI | CLO | GND | GND | ; |-----------------------------------------------------------| ; | CLK | VCC | VCC | VCC | CLK | REV | GND | GND | GND | GND | ; +-----------------------------------------------------------+ =20 ; A,B,C HI,LO =3D Phase A,B,C high and low driver ; CLK =3D Clock ; REV =3D Reverse (Reserve for future use) Output sequence: ; AHI ALO BHI BLO CHI CLO ; 0 0 1 0 0 1=20 ; 1 0 0 0 0 1 ; 1 0 0 1 0 0 ; 0 0 0 1 1 0 ; 0 1 0 0 1 0 ; 0 1 1 0 0 0 ; =20 Writing output as function of previous state: AHI :=3D /AHI * /ALO * BHI * /BLO * /CHI * CLO + AHI * /ALO * /BHI * /= BLO * /CHI * CLO ALO :=3D /AHI * /ALO * /BHI * BLO * CHI * /CLO + /AHI * ALO * /BHI * /= BLO * CHI * /CLO BHI :=3D /AHI * ALO * BHI * /BLO * /CHI * /CLO + /AHI * ALO * /BHI * = BLO * CHI * /CLO BLO :=3D AHI * /ALO * /BHI * /BLO * /CHI * CLO + AHI * /ALO * /BHI * = BLO * /CHI * /CLO CHI :=3D AHI * /ALO * /BHI * BLO * /CHI * CLO + /AHI * /ALO * /BHI * = BLO * CHI * /CLO CLO :=3D /AHI * ALO * BHI * /BLO * /CHI * /CLO + /AHI * /ALO * BHI * /= BLO * /CHI * CLO
On 9/18/2014 2:19 PM, edward.ming.lee@gmail.com wrote:
> >>>> BLDC controller: > We want to program the chip as such: > > ; +-----------------------------------------------------------+ > ; | VCC | VCC | AHI | ALO | BHI | BLO | CHI | CLO | GND | GND | > ; |-----------------------------------------------------------| > ; | CLK | VCC | VCC | VCC | CLK | REV | GND | GND | GND | GND | > ; +-----------------------------------------------------------+ > > ; A,B,C HI,LO = Phase A,B,C high and low driver > ; CLK = Clock > ; REV = Reverse (Reserve for future use) > > Output sequence: > > ; AHI ALO BHI BLO CHI CLO > ; 0 0 1 0 0 1 > ; 1 0 0 0 0 1 > ; 1 0 0 1 0 0 > ; 0 0 0 1 1 0 > ; 0 1 0 0 1 0 > ; 0 1 1 0 0 0
Suggest you rewrite this as: ; CLO AHI BLO CHI ALO BHI ; 1 0 0 0 0 1 ; 1 1 0 0 0 0 ; 0 1 1 0 0 0 ; 0 0 1 1 0 0 ; 0 0 0 1 1 0 ; 0 0 0 0 1 1 to make the desired behavior more obvious (makes it easier to spot mistakes in the "pattern")
> Writing output as function of previous state: > > AHI := /AHI * /ALO * BHI * /BLO * /CHI * CLO + AHI * /ALO * /BHI * /BLO * /CHI * CLO > ALO := /AHI * /ALO * /BHI * BLO * CHI * /CLO + /AHI * ALO * /BHI * /BLO * CHI * /CLO > BHI := /AHI * ALO * BHI * /BLO * /CHI * /CLO + /AHI * ALO * /BHI * BLO * CHI * /CLO > BLO := AHI * /ALO * /BHI * /BLO * /CHI * CLO + AHI * /ALO * /BHI * BLO * /CHI * /CLO > CHI := AHI * /ALO * /BHI * BLO * /CHI * CLO + /AHI * /ALO * /BHI * BLO * CHI * /CLO > CLO := /AHI * ALO * BHI * /BLO * /CHI * /CLO + /AHI * /ALO * BHI * /BLO * /CHI * CLO
Again, a rewrite (substitutions to trim line length) as: CL := /CL*/AH*/BL*/CH* AL* BH + CL*/AH*/BL*/CH*/AL* BH AH := CL*/AH*/BL*/CH*/AL* BH + CL* AH*/BL*/CH*/AL*/BH BL := CL* AH*/BL*/CH*/AL*/BH + /CL* AH* BL*/CH*/AL*/BH CH := /CL* AH* BL*/CH*/AL*/BH + /CL*/AH* BL* CH*/AL*/BH AL := /CL*/AH* BL* CH*/AL*/BH + /CL*/AH*/BL* CH* AL*/BH BH := /CL*/AH*/BL* CH* AL*/BH + /CL*/AH*/BL*/CH* AL* BH makes the pattern visible in the minterms. [For example, it makes obvious the errors in your BHI and CHI sums.] [Of course, it's still early in the day so it is possible *I've* screwed up as well! :> ] You might also think about whether you need any "dead time" at the clock transition to prevent currents flowing in unexpected ways...
On Friday, September 19, 2014 1:41:49 PM UTC-7, Don Y wrote:
> On 9/18/2014 2:19 PM, edward.ming.lee@gmail.com wrote: >=20 > >>>> BLDC controller: >=20 > > We want to program the chip as such:
=20
> > ; +-----------------------------------------------------------+ > > ; | VCC | VCC | AHI | ALO | BHI | BLO | CHI | CLO | GND | GND | > > ; |-----------------------------------------------------------| > > ; | CLK | VCC | VCC | VCC | CLK | REV | GND | GND | GND | GND | > > ; +-----------------------------------------------------------+ >=20 > > ; A,B,C HI,LO =3D Phase A,B,C high and low driver > > ; CLK =3D Clock > > ; REV =3D Reverse (Reserve for future use) >=20 > > Output sequence: >=20 > > ; AHI ALO BHI BLO CHI CLO > > ; 0 0 1 0 0 1 > > ; 1 0 0 0 0 1 > > ; 1 0 0 1 0 0 > > ; 0 0 0 1 1 0 > > ; 0 1 0 0 1 0 > > ; 0 1 1 0 0 0 >=20 > Suggest you rewrite this as: >=20 > ; CLO AHI BLO CHI ALO BHI > ; 1 0 0 0 0 1 > ; 1 1 0 0 0 0 > ; 0 1 1 0 0 0 > ; 0 0 1 1 0 0 > ; 0 0 0 1 1 0 > ; 0 0 0 0 1 1
But the PCB wiring corresponds to "AHI ALO BHI BLO CHI CLO". "CLO AHI BLO C= HI ALO BHI" could be an intermediate state table.
> to make the desired behavior more obvious (makes it easier to spot mistak=
es in the "pattern")
>=20 > > Writing output as function of previous state:
=20
> > AHI :=3D /AHI * /ALO * BHI * /BLO * /CHI * CLO + AHI * /ALO * /BHI=
* /BLO * /CHI * CLO
> > ALO :=3D /AHI * /ALO * /BHI * BLO * CHI * /CLO + /AHI * ALO * /BHI=
* /BLO * CHI * /CLO
> > BHI :=3D /AHI * ALO * BHI * /BLO * /CHI * /CLO + /AHI * ALO * /BHI=
* BLO * CHI * /CLO
> > BLO :=3D AHI * /ALO * /BHI * /BLO * /CHI * CLO + AHI * /ALO * /BHI=
* BLO * /CHI * /CLO
> > CHI :=3D AHI * /ALO * /BHI * BLO * /CHI * CLO + /AHI * /ALO * /BHI=
* BLO * CHI * /CLO
> > CLO :=3D /AHI * ALO * BHI * /BLO * /CHI * /CLO + /AHI * /ALO * BHI=
* /BLO * /CHI * CLO
>=20 > Again, a rewrite (substitutions to trim line length) as: >=20 > CL :=3D /CL*/AH*/BL*/CH* AL* BH + CL*/AH*/BL*/CH*/AL* BH > AH :=3D CL*/AH*/BL*/CH*/AL* BH + CL* AH*/BL*/CH*/AL*/BH > BL :=3D CL* AH*/BL*/CH*/AL*/BH + /CL* AH* BL*/CH*/AL*/BH > CH :=3D /CL* AH* BL*/CH*/AL*/BH + /CL*/AH* BL* CH*/AL*/BH > AL :=3D /CL*/AH* BL* CH*/AL*/BH + /CL*/AH*/BL* CH* AL*/BH > BH :=3D /CL*/AH*/BL* CH* AL*/BH + /CL*/AH*/BL*/CH* AL* BH >=20 > makes the pattern visible in the minterms. [For example, it makes obvious=
the errors in your BHI and CHI sums.] [Of course, it's still early in the = day so it is possible *I've* screwed up as well! :> ] Actually, this is too unstable. The FSM would work if it's already in one = of the 6 states, out of 64. But if it's not, it won't drop in. I am switc= hing to decoding a 3 bits Johnson counter: Q0 :=3D Q1 Q1 :=3D Q2 Q2 :=3D /Q0 =20 AHI =3D Q2 * /Q1 * /Q0 + Q2 * Q1 * /Q0 ALO =3D /Q2 * Q1 * Q0 + /Q2 * /Q1 * Q0 BHI =3D /Q2 * /Q1 * /Q0 + /Q2 * /Q1 * Q0 BLO =3D Q2 * Q1 * /Q0 + Q2 * Q1 * Q0 CHI =3D Q2 * Q1 * Q0 + /Q2 * Q1 * Q0 CLO =3D /Q2 * /Q1 * /Q0 + Q2 * /Q1 * /Q0
> You might also think about whether you need any "dead time" at the clock =
transition to prevent currents flowing in unexpected ways... In that case, it would be 6 bits 12 states Johnson, with alternating rest s= tate. The Johnson counter should work in theory, but the open source galem= u is not showing the right output. The emulator could be wrong. I am stil= l digging up old books and web pages to verify the design by hand.