Thông báo

Collapse
No announcement yet.

Câu lạc bộ thức trắng cùng dientuvietnam.net

Collapse
This is a sticky topic.
X
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • Nguyên văn bởi LeeShin456 Xem bài viết
    Lại thức trắng đêm làm quà cho thằng bạn tặng người yêu!
    Đúng 7h tối cháy con 7805 fi qua chợ trời, rồi lên hàn thuyên dều không có!
    Tự dưng thông minh thế nào lần mò vào diễn đàn dò được tung tích 10 em 7805
    hjhj. đại ka làm quà gì vậy? cho em biết với đc ko?
    em cũng muốn làm một cái gì đó hay hay do chính tay mình làm ra (ko cần phải là do mình nghĩ ra, miễn sao là có người bảo cho chứ ko phải đi ăn cắp bản quyền là đc ) để tặng người yêu.
    nhưng mà em nghĩ mãi mà ko biết làm cái gì. em muốn làm cái mạch trái tim bằng led đơn ghép với nhau nhưng nếu làm bằng ic tổ hợp thì chỉ nháy dc một kiều thì ko hay. mà làm bằng vdk thì em ko biết lập trình như nào. hjx. đại ka hay ai giúp đc thì giúp em với. thanks mọi người trước nha!

    Comment


    • mọi người ơi ai có mạch test con LM311 cho mình xin
      thank you very much

      Comment


      • Há há
        Hình như cái mạch ổn định nhiệt độ mỏ hàn dùi của em đã chạy các bác ạ

        Các bác ngủ ngon nhá

        Comment


        • Điều Khiển Con Lắc Ngược Sử Dụng PID

          Mong các bác giúp dùm em. Hiện em đang làm đồ án ra trường đề tài là sử dụng giải thuật PID để điều khiển con lắc ngược quay sử dụng 89v51rb2. Em đọc xung của encoder ổn rồi và tập điều xung cho động cơ cũng ổn rồi còn phần pid cho động cơ thì cũng đả hiểu tương đối rỏ. Nhưng còn phần điều khiển PID cho con lắc ngược thì em vẩn loai hoai với nó thức trắng cả tháng nay mà đọc phần code của con pic điều khiển pid con lắc ngược mà không hiểu(để bắt chước giải thuật con pid đưa về 89v51 đó mà). Bác nào đả làm về nó thì giúp dùm em với chỉ cần giải thât và hướng chương trính viết như thế nào thôi. Em cũng đuối lắm rồi giúp dùm em với. Ah mà đọc trên diển đàn này thấy bác F đả làm về nó rồi thì bác có thể giúp em được không hay bác nào cũng được. Năm mới mà sao buồn quá không làm được gì. và đây là chương trình của con pic.

          //************************************************** ****************************
          //
          // Software License Agreement
          //
          // The software supplied herewith by Microchip Technology
          // Incorporated (the "Company") is intended and supplied to you, the
          // Company’s customer, for use solely and exclusively on Microchip
          // products. The software is owned by the Company and/or its supplier,
          // and is protected under applicable copyright laws. All rights are
          // reserved. Any use in violation of the foregoing restrictions may
          // subject the user to criminal sanctions under applicable laws, as
          // well as to civil liability for the breach of the terms and
          // conditions of this license.
          //
          // THIS SOFTWARE IS PROVIDED IN AN "AS IS" CONDITION. NO WARRANTIES,
          // WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING, BUT NOT LIMITED
          // TO, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
          // PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. THE COMPANY SHALL NOT,
          // IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL OR
          // CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.
          //
          //************************************************** *******************************
          //
          // File: pendulum.c
          // Date: 14 October 2004 Original code
          // Version: 1.00
          //
          //************************************************** *******************************
          #include <pic.h>
          #include <pic16f684.h>
          #include <math.h>
          #include <stdlib.h>

          void Init();
          void PID();
          void Set_Constants();

          bit flag1,do_PID,int_flag;
          signed char en0, en1, en2, en3, term1_char, term2_char, off_set;
          unsigned char temp;
          short int temp_int;
          unsigned short int ki, kd, kp;
          signed int SumE_Min, SumE_Max, SumE, integral_term, derivative_term, un;
          signed long Cn;

          // __CONFIG _CP_OFF & _CPD_OFF & _BOD_OFF & _MCLRE_ON & _WDT_OFF & _INTRC_OSC_NOCLKOUT & _FCMEN_ON

          //************************************************** *************************
          // Positional PID 256 Hz
          //************************************************** *************************

          //************************************************** *************************
          //Main() - Main Routine
          //************************************************** *************************
          void main()
          {
          Init(); //Initialize 12F629 Microcontroller
          Set_Constants(); //Get PID coefficients ki, kp and kd
          while(1) //Loop Forever
          {
          if(do_PID){
          PID();
          }
          }
          }

          //************************************************** *************************
          //Init - Initialization Routine
          //************************************************** *************************
          void Init()
          {
          PORTA = 0;
          TRISA = 0b00101101; // Set RA4 and RA2 as outputs
          PORTC = 0;
          TRISC = 0b00000011; // Set RC0 and RC1 as inputs, rest outputs
          CMCON0 = 0x07; // Disable the comparator

          IRCF0 = 1; // Used to set intrc speed to 8 MHz
          IRCF1 = 1; // Used to set intrc speed to 8 MHz
          IRCF2 = 1; // Used to set intrc speed to 8 MHz

          CCP1CON = 0b01001100; // Full bridge PWM forward
          ECCPAS = 0; // Auto_shutdown is disabled for now
          PR2 = 0x3F; // Sets PWM Period at 31.2 kHz
          T2CON = 0; // TMR2 Off with no prescale
          CCPR1L = 0; // Sets Duty Cycle to zero
          TMR2ON = 1; // Start Timer2

          ANSEL = 0b00110101; // Configure AN0,AN2,AN4 and AN5 as analog
          VCFG = 0; // Use Vdd as Ref
          ADFM = 1; // Right justified A/D result
          ADCS0 = 1; // 16 TOSC prescale
          ADCS1 = 0;
          ADCS2 = 1;
          CHS0 = 0; // Channel select AN0
          CHS1 = 0;
          CHS2 = 0;
          ADON = 1; //Turn A/D on

          en0 = en1 = en2 = en3 = term1_char = term2_char =0;
          ki = kd = 0;
          kp = off_set = 0;
          temp_int = integral_term = derivative_term = un =0;
          SumE_Max = 30000;
          SumE_Min = 1 - SumE_Max;
          do_PID = 1; // Allowed to do PID function
          T0CS = 0; // Timer0 as timer not a counter
          TMR0 = 10; // Preload value
          PSA = 0; // Prescaler to Timer0
          PS0 = 0; // Prescale to 32 => 256 Hz
          PS1 = 0;
          PS2 = 1;
          INTCON = 0;
          PIE1 = 0;
          T0IE = 1; // Enable Timer0 int
          GIE = 1;
          return;
          }


          void PID() // The from of the PID is C(n) = K(E(n) + (Ts/Ti)SumE + (Td/Ts)[E(n) - E(n-1)])
          {
          integral_term = derivative_term = 0;

          // Calculate the integral term
          SumE = SumE + en0; // SumE is the summation of the error terms
          if(SumE > SumE_Max){ // Test if the summation is too big
          SumE = SumE_Max;
          }
          if(SumE < SumE_Min){ // Test if the summation is too small
          SumE = SumE_Min;
          } // Integral term is (Ts/Ti)*SumE where Ti is Kp/Ki
          // and Ts is the sampling period
          // Actual equation used to calculate the integral term is
          // Ki*SumE/(Kp*Fs*X) where X is an unknown scaling factor
          // and Fs is the sampling frequency
          integral_term = SumE / 256; // Divide by the sampling frequency
          integral_term = integral_term * ki; // Multiply Ki
          integral_term = integral_term / 16; // combination of scaling factor and Kp

          // Calculate the derivative term
          derivative_term = en0 - en3;
          if(derivative_term > 120){ // Test if too large
          derivative_term = 120;
          }
          if(derivative_term < -120){ // test if too small
          derivative_term = -120;
          } // Calculate derivative term using (Td/Ts)[E(n) - E(n-1)]
          // Where Td is Kd/Kp
          // Actual equation used is Kd(en0-en3)/(Kp*X*3*Ts)
          derivative_term = derivative_term * kd; // Where X is an unknown scaling factor
          derivative_term = derivative_term >> 5; // divide by 32 precalculated Kp*X*3*Ts

          if(derivative_term > 120){
          derivative_term = 120;
          }
          if(derivative_term < -120){
          derivative_term = -120;
          }
          // C(n) = K(E(n) + (Ts/Ti)SumE + (Td/Ts)[E(n) - E(n-1)])
          Cn = en0 + integral_term + derivative_term; // Sum the terms
          Cn = Cn * kp / 1024; // multiply by Kp then scale

          if(Cn >= 1000) // Used to limit duty cycle not to have punch through
          {
          Cn = 1000;
          }
          if(Cn <= -1000)
          {
          Cn = -1000;
          }
          if(Cn == 0){ // Set the speed of the PWM
          DC1B1 = DC1B1 = 0;
          CCPR1L = 0;
          }
          if(Cn > 0){ // Motor should go forward and set the duty cycle to Cn
          P1M1 = 0; // Motor is going forward
          temp = Cn;
          if(temp^0b00000001){
          DC1B0 = 1;
          }
          else{
          DC1B0 = 0;
          }
          if(temp^0b00000010){
          DC1B1 = 1;
          }
          else{
          DC1B1 = 0;
          }
          CCPR1L = Cn >> 2; // Used to stop the pendulum from continually going around in a circle
          off_set = off_set +1; // the offset is use to adjust the angle of the pendulum to slightly
          if(off_set > 55){ // larger than it actually is
          off_set = 55;
          }
          }

          else { // Motor should go backwards and set the duty cycle to Cn
          P1M1 = 1; // Motor is going backwards
          temp_int = abs(Cn); // Returns the absolute int value of Cn
          temp = temp_int; // int to char of LS-Byte
          if(temp^0b00000001){
          DC1B0 = 1;
          }
          else{
          DC1B0 = 0;
          }
          if(temp^0b00000010){
          DC1B1 = 1;
          }
          else{
          DC1B1 = 0;
          }
          CCPR1L = temp_int >> 2; // Used to stop the pendulum from continually going around in a circle
          off_set = off_set -1;
          if(off_set < -55){
          off_set = -55;
          }
          }
          en3 = en2; // Shift error signals
          en2 = en1;
          en1 = en0;
          en0 = 0;
          do_PID = 0; // Done
          RA4 = 0; // Test flag to measure the speed of the loop
          return;
          }

          void Set_Constants()
          {
          ANS2 = 1; // Configure AN2 as analog
          ANS4 = 1; // Configure AN4 as analog
          ANS5 = 1; // Configure AN5 as analog

          ADFM = 1; // Right justified A/D result
          CHS0 = 0; // Channel select AN4
          CHS1 = 0;
          CHS2 = 1;
          temp = 200; // Gives delay
          while(temp){
          temp--;
          }
          GODONE = 1;
          while(GODONE);{
          temp = 0; // Does nothing.....
          }
          ki = ADRESH << 8; // Store the A/D result to Integral Constant
          ki = ki + ADRESL;

          CHS0 = 1; // Channel select AN5
          CHS1 = 0;
          CHS2 = 1;
          temp = 200; // Gives delay
          while(temp){
          temp--;
          }
          GODONE = 1;
          while(GODONE);{
          temp = 0; // Does nothing.....
          }
          kd = ADRESH << 8; // Store the A/D result to Differential Constant
          kd = kd + ADRESL;

          CHS0 = 0; // Channel select AN2
          CHS1 = 1;
          CHS2 = 0;
          temp = 200; // Gives delay
          while(temp){
          temp--;
          }
          GODONE = 1;
          while(GODONE);{
          temp = 0; // Does nothing.....
          }
          kp = ADRESH << 8; // Store the A/D result to Proportional Constant
          kp = kp + ADRESL;
          CHS0 = 0; // Channel select AN0
          CHS1 = 0;
          CHS2 = 0;
          }

          void interrupt Isr()
          {

          if(T0IF&&T0IE){
          TMR0 = 10; // Preload value
          T0IF = 0; // Clear Int Flag

          // flag1 = (!flag1);
          RA4 = 1;

          temp_int = 0;
          temp_int = ADRESH << 8; // Store the A/D result with offset
          temp_int = temp_int + ADRESL - 512;
          en0 = temp_int + off_set/8; // Store to error function asuming no over-flow

          do_PID = 1; // Allowed to do PID function
          GODONE = 1; // Start next A/D cycle
          }
          else
          {
          PIR1 = 0;
          RAIF = 0;
          INTF = 0;
          }
          if(temp_int > 180){ //Check if error is too large (positive)

          DC1B0 = DC1B1 = 0; // Stop PWM
          CCPR1L = 0;
          en0 = en1 = en2 = en3 = term1_char = term2_char = off_set = 0; // Clear all PID constants
          Cn = integral_term = derivative_term = SumE = RA4 = 0;
          do_PID = 0; // Stop doing PID
          }
          if(temp_int < -180){ //Check if error is too large (negative)

          DC1B0 = DC1B1 = 0; // Stop PWM
          CCPR1L = 0;
          en0 = en1 = en2 = en3 = term1_char = term2_char = off_set = 0; // Clear all PID constants
          Cn = integral_term = derivative_term = SumE = RA4 = 0;
          do_PID = 0; // Stop doing PID
          }

          }

          link dowload http://www.mediafire.com/?j0willuvmto

          Chúc Mừng Năm Mới.
          WHO AM I ??????????????

          Comment


          • Nguyên văn bởi techpro Xem bài viết
            Mấy hôm nay nghỉ bớt 1 chỗ làm có time để xem xét 1 số vấn đề. Thấy bảng quang báo bọn Trung Quốc làm đúng là hay hơn anh em mình rồi. Nó chia thành các block 8x16 vã mỗi block này có tới 4 con 595 nối tiếp nhau. Rồi các block nối tiếp nhau. 138 chỉ cần sử dụng 2 chân đầu vào là giải mã được cho cả 4 con 595 này rồi nên không hề bị giật. Có ai quan tâm ko nhỉ? Bên TECHPAL đã làm xong phần module điều khiển cho block led của bọn TQ nhưng lai sử dụng mạch PIC tự chế chỉ mất khoảng 200k. Ai nhiệt tình có thể liên hệ với Techpro sẵn sàng chia sẻ
            Mường tượng đầu tiên nó là như thế này:
            Chia cái Block 8x16 thành 2 phần 8x8 < tạm gọi là Block1, Block2>, tương ứng với mỗi Block1 (Block2) được 2 con 595 cai trị theo hàng và cột. Nhưng nếu gắn nối tiếp nhau thì có vẻ khó cho lập trình. Không biết có phải ko nhỉ?
            Anh em cùng thảo luận tí ...

            @tech: dạo này bác làm ăn thế nào, có chỗ nào ổn thì giới thiệu cho e để chuyển hộ khẩu về HN.
            @ Nhật Hùng: dạo này iem toàn đọc bài, chưa đủ kiến thức để có thể viết bài 1 cách mạch lạc được.

            Comment


            • hay that day hay bac nao co the lap ra mot cai blok nao de clb hoat dong di
              |

              Comment


              • OUT mạng về quê ăn Tết. Chúc gia đình nhà VẠC ăn Tết vui vẻ, năm mới MẠNH KHỎE - AN KHANG - THỊNH VƯỢNG - PHÁT TÀI. :x

                Comment


                • Thế la cũng tết oy.Chúc Ae ăn tết ngon lành nhé
                  NBHVDNTG_C5!no trace

                  Comment


                  • Nhân dịp năm mới kinh chúc anh em thành viên diễn đàn một năm mới dồi dào sức khỏe, thành công và hạnh phúc.

                    @Hùng gt: Có 2 loại 1 dòng 595 và 2 dòng 595, lúc nào ghé qua chỗ anh trao đổi nhé.

                    Nguyên văn bởi gtvt45 Xem bài viết
                    Mường tượng đầu tiên nó là như thế này:
                    Chia cái Block 8x16 thành 2 phần 8x8 < tạm gọi là Block1, Block2>, tương ứng với mỗi Block1 (Block2) được 2 con 595 cai trị theo hàng và cột. Nhưng nếu gắn nối tiếp nhau thì có vẻ khó cho lập trình. Không biết có phải ko nhỉ?
                    Anh em cùng thảo luận tí ...

                    @tech: dạo này bác làm ăn thế nào, có chỗ nào ổn thì giới thiệu cho e để chuyển hộ khẩu về HN.
                    @ Nhật Hùng: dạo này iem toàn đọc bài, chưa đủ kiến thức để có thể viết bài 1 cách mạch lạc được.
                    http://techpal.vn
                    Chia sẻ công nghệ, cùng thành công

                    Comment


                    • Đêm tới vợ quấy, không ngủ được
                      đành đọc truyện Dũng Sĩ Herman mà mơ tới ngày con người khám phá ra hành tinh khác bằng con robot khổng lồ.
                      Vào nghề được 3 năm mà trăn trở nhiều quá các bác ạ. Đang học xây dựng rồi chuyển sang tự động hóa,chẳng biết bắt đầu từ đâu kiến thức thì vô cùng

                      Comment


                      • Anh em nào chỉ dạy cho biết nên bắt đầu từ đâu ( kèm tài liệu tiếng Việt, Anh, hoặc Đức) nếu muốn tìm hiểu về xây dựng và lập trình cho robocom...
                        Tại hạ xin cúi đầu cảm tạ...

                        Comment


                        • đêm nay không thấy bác nào tâm sự nhỉ.chán quá
                          em mới tham gia diễn đàn mong mọi người giúp đỡ
                          có bác nào rảnh rỗi cho em bái sư huynh cái?
                          cần thọc hỏi nhiều thứ mà
                          gmail:

                          Comment


                          • em mới là sinh viên năm đầu, đang trong quá trình tìm hiểu về điện điện tử.
                            Đêm nay chắc thức trắng ôn midterm quá

                            Comment


                            • Cố gắn lên đi En Zai! sẽ còn nhiều thất bại lắm đó!

                              Thất bại là Mẹ đẻ của thành công!

                              Comment


                              • the y tuong thanh lap hoi dong thuc trang cung dientuvietnam.net den dau roi cac chien huu.
                                Cho em tham gia voi dc ko.Co gi mall cho em nhe
                                xuanthuydtvt@gmall.com

                                sdt : 0982932315
                                lop Dt1001 truong DH Dan Lap Hai Phong

                                Comment

                                Về tác giả

                                Collapse

                                techpro Tìm hiểu thêm về techpro

                                Bài viết mới nhất

                                Collapse

                                Đang tải...
                                X