El presente sitio presenta diseños y proyectos realizados con Solidworks y otros programas 3d , además de laminas y modelos 3d para practicar en casa, con el único objetivo de poder aprender y explorar la capacidad de Solidworks, no existiendo en ningún caso fines de lucro.

Friday, March 1, 2013

Generador simple de Onda cuadrada CCS

Posted by Juan Francisco | Friday, March 1, 2013 | Category: | 0 comentarios

/////////////////////////////////////////////////////////////////////////
////                                                                 ////
////  This program displays a message over the RS-232 and waits for  ////
////  any keypress to continue.  The program will then begin a 1khz  ////
////  square wave over I/O pin B4.                                   ////
////                                                                 ////
////  Comment out the printf's and getc to eliminate the RS232 and   ////
////  just output a square wave.                                     ////
////                                                                 ////
////  Change both delay_us to delay_ms to make the frequency 1 hz.   ////
////  This will be more visable on a LED.                            ////
////                                                                 ////
////                                                                 ////
////  Change the device, clock and RS232 pins for your hardware if   ////
////  needed.                                                        ////
/////////////////////////////////////////////////////////////////////////




#include <30f2010 .h="">

//#device ICD=TRUE  // For using the debugger, un-comment

#use delay(crystal=20mhz)



// UART1A specifies the alternate UART pins Pin_C13, Pin_C14
// use UART1 to sprcify UART for pins Pin_F3, Pin_F2

#use rs232(baud=9600, UART1A)


void main() {

   printf("Press any key to beginnr");
   getc();
   printf("1 khz signal activatednr");

   while (TRUE) {
     output_high(PIN_B4);
     delay_us(500);
     output_low(PIN_B4);
     delay_us(500);
   }
}

Simple Coversor Analógico Digital CCS

Posted by Juan Francisco | | Category: | 0 comentarios

/////////////////////////////////////////////////////////////////////////
////                                                                 ////
////  This program displays the min and max of 30 A/D samples over   ////
////  the RS-232 interface.  The process is repeated forever.        ////
////                                                                 ////
////  Configure the CCS prototype card as follows:                   ////
////      Insert jumpers from: 11 to 17, 12 to 18 and 9 to 16        ////
////      Use the #9 POT to vary the voltage.                        ////
/////////////////////////////////////////////////////////////////////////



#include<16f877a .h="">
#fuses HS,NOLVP,NOWDT,PUT
#use delay(clock=20000000)
#use rs232(baud=9600,xmit=PIN_C6,rcv=PIN_C7)

void main() {
   int i, value, min, max;
   
   printf("Sampling:");
   
   setup_adc_ports( RA0_ANALOG );
   setup_adc( ADC_CLOCK_INTERNAL );
   set_adc_channel( 0 );
   
   do {                       //Takes 30 samples from pin A0
      min = 255;              //and displays the min and max
      max = 0;                //values for that 100ms period
      for(i = 0; i <= 30; ++i) {
         delay_ms(100);
         value = read_adc();
         if(value < min)
            min = value;
         if(value > max)
            max = value;
      }
      printf("nrMin:%x MAX: %x", min, max);
   } while (TRUE);
}

Contar segundos con el timer 0 CCS

Posted by Juan Francisco | | Category: | 0 comentarios

///////////////////////////////////////////////////////////////////////
////                                                               ////
//// This program uses the RTCC (timer0) and interrupts to keep a  ////
//// real time seconds counter.  A simple stop watch function is   ////
//// then implemented.                                             ////
////                                                               ////
//// Configure the CCS prototype card as follows:                  ////
////     Insert jumpers from: 11 to 17 and 12 to 18.               ////
///////////////////////////////////////////////////////////////////////



#include<16f877a .h="">
#fuses HS,NOLVP,NOWDT,PUT
#use delay(clock=20000000)
#use rs232(baud=9600,xmit=PIN_C6,rcv=PIN_C7)

#define high_start 76
byte seconds, high_count;

#INT_RTCC                                    //Interrupt procedure
clock_isr() {                                //called every time RTCC
   high_count -= 1;                          //flips from 255 to 0

   if(high_count==0) {
      ++seconds;
      high_count=high_start;                 //Inc SECONDS counter every
   }                                         //76 times to keep time
}

void main() {                                //a simple stopwatch program
   byte start, time;

   high_count = high_start;
   setup_timer_0( RTCC_INTERNAL | RTCC_DIV_256 );
   set_timer0(0);
   enable_interrupts(INT_RTCC);
   enable_interrupts(GLOBAL);

   do {
      printf("Press any key to begin.nr");
      getc();
      start = seconds;
      printf("Press any key to stop.rn");
      getc();
      time = seconds - start;
      printf("%U seconds.nr", time);
   } while (TRUE);
}

Stepper Motor Controller CCS

Posted by Juan Francisco | | Category: | 0 comentarios

/////////////////////////////////////////////////////////////////////////
////  This program interfaces to a stepper motor.  The program will  ////
////  use the RS-232 interface to either control the motor with a    ////
////  analog input, a switch input or by RS-232 command.             ////
////                                                                 ////
////  Configure the CCS prototype card as follows:                   ////
////     Connect stepper motor to pins 47-50 (B0-B3)                 ////
////     Conenct 40 to 54 (pushbutton)                               ////
////     Connect 9 to 15 (pot)                                       ////
////     See additional connections below.                           ////
/////////////////////////////////////////////////////////////////////////



#include <16c74 .h="">
#fuses HS,NOWDT,NOPROTECT
#use delay(clock=20000000)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)  // Jumpers: 8 to 11, 7 to 12

#include 

#byte port_b = 6

#define FOUR_PHASE TRUE

#ifdef FOUR_PHASE

byte const POSITIONS[4] = {0b0101,
                           0b1001,
                           0b1010,
                           0b0110};
#else
byte const POSITIONS[8] = {0b0101,
                           0b0001,
                           0b1001,
                           0b1000,
                           0b1010,
                           0b0010,
                           0b0110,
                           0b0100};
#endif


drive_stepper(BYTE speed, char dir, BYTE steps) {
   static BYTE stepper_state = 0;
   BYTE i;

   for(i=0; i
      delay_ms(speed);
      set_tris_b(0xf0);
      port_b = POSITIONS[ stepper_state ];
      if(dir!='R')
         stepper_state=(stepper_state+1)&(sizeof(POSITIONS)-1);
      else
         stepper_state=(stepper_state-1)&(sizeof(POSITIONS)-1);
   }
}



use_pot() {
   BYTE value;

   setup_adc(adc_clock_internal);
   set_adc_channel( 1 );
   printf("rn");

   while( TRUE ) {
      value=read_adc();
      printf("%2Xr",value);
      if(value<0x80 font="">
         drive_stepper(value,'R',8);
      else if(value>0x80)
         drive_stepper(128-(value-128),'F',8);
   }

}


use_switch(BYTE speed, char dir) {

   BYTE steps;

   printf("nrSteps per press: ");
   steps = gethex();

   while(true) {
      while(input(PIN_B7)) ;
      drive_stepper(speed,dir,steps);
      while(!input(PIN_B7)) ;
      delay_ms(100);
   }
}


main() {

   byte speed,steps;
   char dir;

   setup_port_a(RA0_RA1_ANALOG);

   while (TRUE) {
       printf("nrSpeed (hex): ");
       speed = gethex();

       if(speed==0)
          use_pot();

       printf("nrDirection (F,R): ");
       dir=getc()|0x20;
       putc(dir);

       printf("nrSteps (hex): ");
       steps = gethex();

       if(steps==0)
          use_switch(speed,dir);

       drive_stepper(speed,dir,steps);
   }

}

Secuenciador de luces Led con 555 y 4017

Posted by Juan Francisco | | Category: | 0 comentarios

Los siguientes elementos fueron empleados en el montaje del circuito:

  • Fuente: Bateria 9V DC.
  • Resistencias: R3 (10 unidades de 200 Ω ó 330 Ω), R2 (de 33 KΩ, 82 KΩ, 100 KΩ ó potenciómetro de 100 KΩ ó 1 MΩ) y R1 (de 6.8 ó 10 KΩ).
  • Condensador cerámico C2 de 0.01 μF.
  • Condensador electrolítico C1 de 10, 100 μF.
  • Diodos LEDs: 9 unidades.
  • Circuito integrado LM 555.
  • Circuito integrado 4017.