|
18f4550 usb interfacing...
[复制链接]
|
|
发表于 10-2-2009 06:13 PM
|
显示全部楼层
原帖由 waiweng83 于 10-2-2009 10:45 AM 发表
版主,relay 的 coil 那边加个 1N4148 diode 比较好吧?不然 transistor 会很容易坏的。
可以放, 不妨。
但是其实, 你真的有试过因为没放Free wheeling Diode而弄坏transistor吗?
我的经验是没坏过, 用很多年的。。除非Relay 很大一颗, 反向电压很大。。。
但是我很少用Relay 啦。。。
有用也是用ULN2003/ ULN2803 来驱动, 也没有放过Diode 在Relay coil 哪里。。
但是ULN2xx3 里的common有接12V。 |
|
|
|
|
|
|
|
发表于 10-2-2009 08:52 PM
|
显示全部楼层
原帖由 pic 于 10-2-2009 06:13 PM 发表
可以放, 不妨。
但是其实, 你真的有试过因为没放Free wheeling Diode而弄坏transistor吗?
我的经验是没坏过, 用很多年的。。除非Relay 很大一颗, 反向电压很大。。。
我是没有试过弄坏 transistor。因为每次我都有接 diode。
但我就曾经被 power window motor 弄到我的 MCU hang 去。那时 motor 是用 relay 来控制,有独自的电池供电,和 MCU 并没有 common ground。我以为这样就不需要接 free wheeling diode。结果很多次当 motor 一停,MCU 就 hang 了。后来接了 diode 就没事了。从此以后我每一次都会接 diode 了。
但是我很少用Relay 啦。。。
有用也是用ULN2003/ ULN2803 来驱动, 也没有放过Diode 在Relay coil 哪里。。
但是ULN2xx3 里的common有接12V。
用 ULN 的话就不用 diode 了,因为每一个 channel 的 output 都已经有 diode 接去 common 了。 |
|
|
|
|
|
|
|
发表于 10-2-2009 10:38 PM
|
显示全部楼层
|
|
|
|
|
|
|
发表于 11-2-2009 08:47 AM
|
显示全部楼层
PIC版主,想问一下关于版主说的智能控制系统。
其实意思是不是说,
如果不在家,在外地就可以用internet access去家里面的电脑,然后再用电脑的usb通过18f4550去控制家里面的风扇啊灯之类的relay?
题外问题:18f4550可以接温度sensor吗?不知道有没有相关的资料呢?还是要用16f877a? |
|
|
|
|
|
|
|
发表于 11-2-2009 09:50 AM
|
显示全部楼层
原帖由 冷血趙雲 于 11-2-2009 08:47 AM 发表
其实意思是不是说,
如果不在家,在外地就可以用internet access去家里面的电脑,然后再用电脑的usb通过18f4550去控制家里面的风扇啊灯之类的relay?
Bingo...没错。。
题外问题:18f4550可以接温度sensor吗?
当然可以啊。。。用温度感应器LM35。
[quote]不知道有没有相关的资料呢?
LM35D接PIC16F877A (LCD ADC)
http://cforum3.cari.com.my/viewthread.php?tid=725843
当然可以用18F4550, PIC18F4550也比16F877A强多了。。
PIC16F877A 也应该少用, 应该用PIC16F887 替代。 |
|
|
|
|
|
|
|
发表于 11-2-2009 11:37 AM
|
显示全部楼层
原帖由 pic 于 10-2-2009 10:38 PM 发表
题外话, 大家来思考看看。。。
如果你的电板是用在汽车上, 汽车有很多噪音源 (noise),如发动汽车时(Engine ignition),Power Window。, Horn 之类的,冷气开关, 风扇开关, 如何避免你的MCU 当机呢?
加看门狗。Internal 的不够还可以加 external 的。然后所有 IO 接 opto coupler,再放个金属盒作 shielding。这样够吗? |
|
|
|
|
|
|
|
发表于 11-2-2009 03:42 PM
|
显示全部楼层
原帖由 waiweng83 于 11-2-2009 11:37 AM 发表
加看门狗。Internal 的不够还可以加 external 的。然后所有 IO 接 opto coupler,再放个金属盒作 shielding。这样够吗?
参考你的车的Alarm, 除了看门狗不知道有没有以外, 廉价的他可能没有external reset IC, 没有Opto isolate, 也没有金属盒, 有一些车Alarm还是用非常经典的PIC16C54 来做, 去查看16C54什么来的。。。 |
|
|
|
|
|
|
|
发表于 11-2-2009 06:16 PM
|
显示全部楼层
|
|
|
|
|
|
|
发表于 12-2-2009 12:49 PM
|
显示全部楼层
原帖由 冷血趙雲 于 11-2-2009 06:16 PM 发表
那么现在我有两个选项
1.继续用18f4550来接lm35
当然是一定要用18f4550。
那么如果用18f4550接lm35的话是不是和你给的这个图一样?
大致一样, 但你不需要LCD的部分。
A===如果接去我的18f4550是不是那个light sensor要换 lm35是吗?
是
B===然后lcd的d4-d7就接去18f4550的rd4-rd7 (pin27-30)是吗??
如果你想要LCD 的话。
c===再问那个lm35的vout就是接去18f4550的pin2吗?
是
D===你的16f877a接lcd的 circuit里面,RV1 和RV2代表什么??
RV1是调LCD 的contrast, 亮度。
RV2 是模拟Analog 电压。
E===LM35DZ,LM35AZ,LM35CZ有什么分别??最便宜的是D,是不是买这个就可以?其他两个都2X到3X块。
分别请查看datasheet。
你可以买最便宜的那个就可以了。 |
|
|
|
|
|
|
|
发表于 12-2-2009 10:47 PM
|
显示全部楼层
原帖由 pic 于 12-2-2009 12:49 PM 发表
当然是一定要用18f4550。
大致一样, 但你不需要LCD的部分。
是
如果你想要LCD 的话。
是
RV1是调LCD 的contrast, 亮度。
RV2 是模拟Analog 电压。
分别请查看datasheet。
你 ...
噢!明白了!就是variable resistor控制的。
那么如果那个LCD的pin3如果不接任何东西的话那个contrast就是最高的咯? |
|
|
|
|
|
|
|
发表于 13-2-2009 08:12 AM
|
显示全部楼层
原帖由 冷血趙雲 于 12-2-2009 10:47 PM 发表
噢!明白了!就是variable resistor控制的。
那么如果那个LCD的pin3如果不接任何东西的话那个contrast就是最高的咯?
LCD的pin3如果不接, 可能看不到什么, 接Gnd的话那个contrast才是最高。 |
|
|
|
|
|
|
|
发表于 13-2-2009 08:44 AM
|
显示全部楼层
回复 31# pic 的帖子
OK。明白了。
请问版主,那个温度+LCDdisplay的 program16f877a的C源码可以一样用在18F4550吗?
还是只是要改setting?-
- #include <16F877A.h>
- #device ADC=10
- #fuses HS,NOWDT,NOPROTECT,NOLVP
- #use delay(clock=20000000)
- ///////////////////////////////////////////////////////////////////////////////
- // LCD Driver
- ///////////////////////////////////////////////////////////////////////////////
- // As defined in the following structure the pin connection is as follows:
- /*
- LCD 16 X 2 line
- PortD.0-> RS
- PortD.1-> RW
- PortD.2-> E
- PortD.3
- PortD.4-> D4
- PortD.5-> D5
- PortD.6-> D6
- PortD.7-> D7
- */
- /////////////////////////////////////////////////////////////////
- // LCD Driver
- struct lcd_pin_map { // This structure is overlayed
- boolean rs; // on to an I/O port to gain
- boolean rw; // access to the LCD pins.
- boolean enable; // The bits are allocated from
- boolean unused; // low order up. ENABLE will
- int data : 4; // be pin B0.
- } lcd;
- #byte lcd = 0x08 // on to port D (at address 0x08)
- byte CONST LCD_INIT_STRING[4] = {0x28, 0xc, 1, 6};
- void lcd_send_nibble( byte n )
- {
- lcd.data = n;
- delay_cycles(1);
- lcd.enable = 1;
- delay_us(2);
- lcd.enable = 0;
- }
- void lcd_send_byte( byte address, byte n )
- {
- lcd.rs = 0;
- delay_ms(5);
- lcd.rs = address;
- delay_cycles(1);
- lcd.rw = 0;
- delay_cycles(1);
- lcd.enable = 0;
- lcd_send_nibble(n >> 4);
- lcd_send_nibble(n & 0xf);
- }
- void lcd_init()
- {
- byte i;
- set_tris_d(0);
- lcd.rs = 0;
- lcd.rw = 0;
- lcd.enable = 0;
- delay_ms(15);
- for(i=1;i<=3;++i) {
- lcd_send_nibble(3);
- delay_ms(5);
- }
- lcd_send_nibble(2);
- for(i=0;i<=3;++i)
- {
- lcd_send_byte(0,LCD_INIT_STRING);
- }
- }
- void lcd_gotoxy( byte x, byte y)
- {
- byte address;
- if(y!=1)
- address=0x40;
- else
- address=0;
- address+=x-1;
- lcd_send_byte(0,0x80|address);
- }
- void lcd_putc( char c)
- {
- switch (c) {
- case '\f' : lcd_send_byte(0,1); //delay_ms(5);
- break;
- case '\n' : lcd_gotoxy(1,2); break;
- default : lcd_send_byte(1,c); break;
- }
- }
- ///////////////////////////////////////////////////////////////////////////////
- void main()
- {
- long value;
- lcd_init();
- delay_ms(6);
- lcd_putc("\fLight Measure";
- lcd_putc("\nBy : PIC @ cArI";
- delay_ms(1000);
- setup_port_a( ALL_ANALOG );
- setup_adc( ADC_CLOCK_INTERNAL );
- set_adc_channel( 0 );
- while(TRUE)
- {
- value = Read_ADC();
- printf(lcd_putc,"\fReading: %lu ",value);
- delay_ms(500);
- }
- }
复制代码
还有我买的lcd有16pin,15和16是 A和K
代表什么呢?
Vo就是Vee?
[ 本帖最后由 冷血趙雲 于 13-2-2009 03:27 PM 编辑 ] |
|
|
|
|
|
|
|
发表于 14-2-2009 10:26 AM
|
显示全部楼层
我试过不加fly back diode, transistor bias 不到。 relay 不能跳。 或者 snubber 用 RC 的, 在AC DC 都能用。
原帖由 pic 于 10-2-2009 10:38 PM 发表
题外话, 大家来思考看看。。。
如果你的电板是用在汽车上, 汽车有很多噪音源 (noise),如发动汽车时(Engine ignition),Power Window。, Horn 之类的,冷气开关, 风扇开关, 如 ...
power, IO 都加 decoupling cap? |
|
|
|
|
|
|
|
发表于 15-2-2009 05:00 PM
|
显示全部楼层
原帖由 冷血趙雲 于 13-2-2009 08:44 AM 发表
OK。明白了。
请问版主,那个温度+LCDdisplay的 program16f877a的C源码可以一样用在18F4550吗?
还是只是要改setting?
可以, 改 #include <16F877A.h> 到 #include <18F4550.h>
还有我买的lcd有16pin,15和16是 A和K
代表什么呢?
A K 是LED 背光, 可以用20ohm 电阻接到5V。
如不要 背光, 不接也可以。
是。 |
|
|
|
|
|
|
|
发表于 15-2-2009 05:04 PM
|
显示全部楼层
原帖由 chan1314 于 14-2-2009 10:26 AM 发表
我试过不加fly back diode, transistor bias 不到。 relay 不能跳。
这很怪, 不应该会这样严重。
power, IO 都加 decoupling cap?
这是其中一种标准的做法。。。 |
|
|
|
|
|
|
|
发表于 15-2-2009 06:31 PM
|
显示全部楼层
原帖由 pic 于 15-2-2009 05:00 PM 发表
可以, 改 #include 到 #include
A K 是LED 背光, 可以用20ohm 电阻接到5V。
如不要 背光, 不接也可以。
是。
终于等到版主回复了哦~~
谢谢~
如果还有问题再来麻烦版主了~谢谢!
我买了一个12vdc的OMRON relay.
不知道自己有没有买错。
我买的是: RELAY SPDT 10A 12VDC PCB - G5LB-1-DC12
有5个pin,可是不会接。。没有用过。。
版主可以指教指教嗎?
[ 本帖最后由 冷血趙雲 于 15-2-2009 06:43 PM 编辑 ] |
|
|
|
|
|
|
|
发表于 16-2-2009 05:08 PM
|
显示全部楼层
|
|
|
|
|
|
|
发表于 16-2-2009 07:30 PM
|
显示全部楼层
|
|
|
|
|
|
|
发表于 16-2-2009 10:21 PM
|
显示全部楼层
|
|
|
|
|
|
|
发表于 17-2-2009 07:28 AM
|
显示全部楼层
原帖由 冷血趙雲 于 16-2-2009 10:21 PM 发表
一切都顺利,只是normally opened 和normally closed和你给的倒转而已。
上面的那些图是Top View, 由上看, 不是倒转。
USB的部分你也要小心不要搞反, 用电表量可以找到5V + 和 Gnd -, 然后D+, D- 就不会错了。
可是每当那个switch自动跳的时候,都有'tak tak'的声音。
relay 是机械式, 所以有声音是很正常。
因为我还是在用电脑power supply拿12v来test风扇的。
所以那个speaker也"tak tak"声。这样relay是正常的是吗?
Speaker 喇叭那个就是检拾到relay coil, 或开关风扇时的电源噪音, 也很正常。 |
|
|
|
|
|
|
| |
本周最热论坛帖子
|