Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

RC Snubber for BTA26-600 Interfaced to PIC16F73 for AC Single phase motor control

Status
Not open for further replies.

jean12

Advanced Member level 2
Joined
Aug 27, 2013
Messages
529
Helped
5
Reputation
12
Reaction score
6
Trophy points
18
Activity points
5,497
Hello,I would like to control the speed of an AC Single phase motor I constructed the ciruit as you find in attachment.I have the following problem which I would like you to help me solving:
>>Whith the snubber of 1nF/250V(shown by multimeter) and 1.5Kohm is not allowing the PIC to control the motor
>>When the optocoupler MOC3020 is replaced by a DC voltage of 3.3V the motor turns very well
>>How should I calculate the values for those R and C of the snubber circuit?
>>I am using BTA26-600 at 230VAC/50HZ with an AC Single phase motor of 0.85A/230V at 1500RPM how may I proceed for making this in on state and change its speed?I am using PIC16F73 and would like to code in Micro c,
here are some of the code please help me to make the speed variable with potentiometer or push button.

The code I am using are here,it could be very helpful and I will be very thankful to the user here who can help me to adjust the speed of an AC Single phase motor with enhancing the functionalities of the following codes:unfortunately they are not allowing me to control the speed of an AC speed motor with a fixed voltage at a delay of 5ms.
PHP:
unsigned char FlagReg;
sbit ZC at FlagReg.B0;
 int angle,v1;
 unsigned int v;


void interrupt(){
     if (INTCON.INTF){
        ZC = 1;
        INTCON.INTF = 0;
     }
}
void main() {
       PORTB = 0;
       PORTC=0;
     TRISB = 0x01;              //RB0 input for interrupt
     TRISA=0x01;   //Input for potentiometer
     TRISC.b6=0;   //Output for driving the TRIAC
     TRISC.B0=0;


     OPTION_REG.INTEDG =0;      //interrupt on falling edge
     INTCON.INTF = 0;           //clear interrupt flag
     INTCON.INTE = 1;           //enable external interrupt
     INTCON.GIE = 1;            //enable global interrupt

    while (1){
             if (ZC){ //zero crossing occurred

              PORTC.B6 = 1; //Send a 8ms pulse
            delay_ms(1);
              PORTC.B6 = 0;
              ZC = 0;
           }
               PORTC.B0=1 ;  //Turn on LED on RC0
              delay_ms(1500);
                 PORTC.B0=0;     //Turn off LED on RC0
                 Delay_ms(1000);
     }
}

Please help
 

Attachments

  • AC_MOTOR.zip
    89.5 KB · Views: 85
Last edited:

With the snubber of 1nF/250V(shown by multimeter) and 1.5Kohm is not allowing the PIC to control the motor
Your schematic is showing a different circuit. Anyway, which behavior do you exactly observe?

1 nF is about no snubber. Think about capacitors in a 47nF to 220 nF range.

As an additional point, the crossing detector in your schematic is functionless (missing ground connection).

View attachment acmotor.png
 

Dear FvM,the cross detector is working because I am getting a good signal with a scope.
What about snubberless TRIAC?Did you heared on that?I was reading and I found a document saying that the BTA- are snubberless components could those be used with snubbers?
What about creating a firing angle,whatever is the delay with the above codes the output is at maximum level,how may I treat this?
 

Some triacs may be snubberless, MOC3021 however requires RC filters to prevent self triggering by high di/dt. Particularly critical with inductive load, e.g. a motor.

What about creating a firing angle,whatever is the delay with the above codes the output is at maximum level,how may I treat this?
Obviously, 0 - 180 degree firing angle corresponds to 0 - 10 ms delay (for 50 Hz mains). What's your problem in this regard?

the cross detector is working because I am getting a good signal with a scope.
Presumedly the real circuit is different from the schematic.
 

0-180degres correspond to 10ms but when I change the delay in my codes,nothing changes on the output voltage it remain 230V and the motor keeps the same speed.So what should I do?
Here is the circuit schematic corresponding to the implemented one and the code
Code:
if (ZC){ //zero crossing occurred
             //  delay_ms(2);
              PORTC.B6 = 1; //Send a 8ms pulse
            delay_ms(5);
              PORTC.B6 = 0;
              ZC = 0;
           }
when changing that delay to 2ms or 7ms or 9ms the output voltage remain the same.
Code:
unsigned char FlagReg;
sbit ZC at FlagReg.B0;
 int angle,v1;
 unsigned int v;


void interrupt(){
     if (INTCON.INTF){
        ZC = 1;
        INTCON.INTF = 0;
     }
}
void main() {
       PORTB = 0;
       PORTC=0;
     TRISB = 0x01;              //RB0 input for interrupt
     TRISA=0x01;   //Input for potentiometer
     TRISC.B6=0;   //Output for driving the TRIAC
     TRISC.B0=0;
     OPTION_REG.INTEDG =1;      //interrupt on falling edge
     INTCON.INTF = 0;           //clear interrupt flag
     INTCON.INTE = 1;           //enable external interrupt
     INTCON.GIE = 1;            //enable global interrupt

    while (1){
             if (ZC){ //zero crossing occurred
             //  delay_ms(2);
              PORTC.B6 = 1; //Send a 8ms pulse
            delay_ms(5);
              PORTC.B6 = 0;
              ZC = 0;
           }
              /* PORTC.B0=1 ;  //Turn on LED on RC0
              delay_ms(1000);
                 PORTC.B0=0;     //Turn off LED on RC0
                 Delay_ms(1000);   */
     }
}

see my complete codes:


Please help
 

Attachments

  • ac_motor_ok.zip
    77.3 KB · Views: 84

We can just guess if your zero crossing detection is actually working. You say you are using an oscilloscope, so you should be well able to check at which point the design is failing.

With the given delay numbers, increasing the initial delay will cause the trigger pulse to extend beyond the half wave, skipping the next zero crossing. Surely not what you want.

Finally. You say "nothing changes on the output voltage", but didn't mention what the voltage is. Impossible to guess what's happening.
 

Sir,how would the RC Filter be added on the MOC3021 for cancelling the self filtering?How will its components be determined?

Kind Regards,
 

Status
Not open for further replies.

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top