头像-181450

zhczlzhang

  • 上海市奉贤区
  • 单片机、嵌入式、电源技术、模拟技术
  • 消费电子

个人成就

获得 2 次赞

帮助过6人

L298N无输出

如图所示我的L298N原理如图,当我用IO口上拉ENAIN2下拉IN1时,按理来说OUT1OUT2应该输出24V,0V,但是我的图中OUT1跟OUT2输出的是0V0V.测量后,发现ENA是4.978V,IN2是2.5V,IN1是0V,在控制电压输入信号范围内,这个原理图是根据官方的原理图来的,data里面也说是兼容TTL的。但就是OUT1OUT2无输出,1.4.8.9.15脚都按照原理图接好了,折腾半天了也没用,请大家指教。

N型MOSFET不通,光耦不通,大家看下是哪里问题

我实际搭了一个N型的MOSFET FDS9945管来试验他的性能,结果发现光耦PC817 IN2脚不管是高电平还是低电平,N型mosfet的2脚都是高电平,实测通过IO口给IN2高电平信号,IN2引脚是低电平,给IN2低电平信号,IN2还是低电平,但是不管IN2脚不管是高电平还是低电平,N型mosfet的2脚都是高电平。然后我用电源VCC3.3V接IN2,此时测得IN2是高电平,但是N型mosfet的2脚依然是高电平不是低电平,求解?已经更换过好几个光耦了,都是这个问题,不知道哪里的问题。

P型MOS管高电平导通了,哪里不对

如图所示我设计了一个MOSFET管控制电机的电路,用P型MOSFET来控制电源端,N型MOSFET来控制地端,P型选择了FDS9958N型选择了FDS9945,N型控制没问题,G端高导通,低截止很正常,但是P型设计就不对了G端高导通,低也导通,完全没有他原本的特性G端高截止低导通,不知道那里设计出问题了,请大家指教。

请问MP2303哪里出问题了,怎么没有输出呢?

请教一下大家我哪里出问题了,按照mp2303 datasheet里面的的经典电路图24V转5V 3A的参考电路设计的电路,结果在实测中发现2脚是23.7V,7脚是6.8V,但是却没有5V输出,请教是哪里设计有问题?该如何解决。

大家看下该怎么把AD侧边栏恢复正常

我昨天设计的时候不知道碰到那里,结果ad10的左侧边栏就变成这样了,怎么都恢复不过来,不管怎么拖动都不行,请教该怎么恢复成原来的点击就在小红框那里展开一个全新窗口的操作。

stm32f4串口只能接收一次

u8 t; u8 data[5]; u8 len; u16 times=0; unsigned int time=0; void Cargo_RUN(void); void Cargo_two_RUN(void); int main(void) { NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//éèÖÃÏμí3ÖD¶ÏóÅÏ輶·Ö×é2 delay_init(168); //Ñóê±3õê¼»ˉ uart_init(115200); //′®¿ú3õê¼»ˉ2¨ìØÂêÎa115200 LED_Init(); //3õê¼»ˉóëLEDᬽóμÄó2¼t½ó¿ú delay_ms(10); while(1) { // usat_init(); if(USART_RX_STA&0x4000) { //len=USART_RX_STA&0x3fff;//μÃμ½′Ë′νóêÕμ½μÄêy¾Y3¤¶è if(USART_RX_BUF[0]==0x01) { if(USART_RX_BUF[1]==0x05) { if(USART_RX_BUF[2]==0x05) { USART_RX_STA=0; Cargo_RUN(); // data[0]=0x08; // data[1]=0x05; // data[2]=0x01; // data[3]=0x09; // len=4; } } } for(t=0;t<len;t++) { USART_SendData(USART1 data[t]); //Ïò′®¿ú1·¢Ëíêy¾Y while(USART_GetFlagStatus(USART1USART_FLAG_TC)!=SET);//μè′y·¢Ëí½áêø } //printf("\r\n\r\n");//2åèë»»DD memset(data020*sizeof(char)); USART_RX_STA=0; } else { times++; // if(times%5000==0) // { // printf("AT+CIPSTART=\"TCP\"\"192.168.1.10\"8080\r\n"); // printf("ÕyμãÔ-×ó@ALIENTEK\r\n\r\n\r\n"); // } data[0]=0x08; data[1]=0x02; data[2]=0x09; data[3]=0x07; if(times%200==0)printf("%02X%02X%02X%02X"data[0]data[1]data[2]data[3]); if(times%30==0)LED0=!LED0;//éá˸LEDìáê¾Ïμí3ÕyÔúÔËDD. delay_ms(10); } } } void Cargo_RUN(void) { // if (USART_RX_BUF[3]<=0x3C)//μ±μú4¸ö×Ö½úD¡óú60¸ö»õμàê±£¬¼ìDøÏÂò»2½ // { switch (USART_RX_BUF[3]) { case 0x01://′ò¿a1oÅ»õμà Cargo_1_RUN(); delay_ms(time); Cargo_1_STOP(); data[0]=0x00; data[1]=0x05; data[2]=0x00; len=3; break; case 0x02://′ò¿a2oÅ»õμà Cargo_2_RUN(); delay_ms(time); Cargo_2_STOP(); data[0]=0x00; data[1]=0x05; data[2]=0x00; len=3; break; default: data[0] = 0x00;//ÆäËü2»Ö§3ÖμÄ1|Äü£¬1|Äüλֱ1£¬ data[1] = 0x04; data[2] = 0x01;//éèÖÃòì3£ÂeÎa1 len = 3; break; }在原子哥的串口实验里面我尝试扩展串口实验。我的结果应该是是开机后串号在没有接收到数据的情况下一直在向上发出08020907,在接收到数据后进行比对,数据相符向上传输数据000500.然后我修改发送数据为数组,检测到上位机发送01050501-010502后发送08020907,结果开机接收数据正常,在检测到上位机有数据发送过来,数据正确时,会返回对应的数据,但是只有一次。然后就无反应了。但是我一旦去除else之后的空闲时间发送函数。就接受正常了。我把DATA的数组清空,USART_RX_STA也置零了,但是还是那样,一填加空闲发送,接受到数据并回复后就无反应了,不知道那里错了,请指教。​

esp8266在while循环时经常不循环

我买了ESP 8266 01做控制用,但是在主循环里面我用了while死循环,结果诡异的是在判断完SendDataFlage等于1,执行完这个If判段语句后,他的while死循环就执行不下去了,就在这里断掉了,最离谱的是我做的串口中断判断函数,在接收到6666666011,之后执行完蜂鸣器响之后,也不执行向下语句了,我在memset函数那里做了蜂鸣器响的功能,结果却发现语句完全没有执行到这里。我最后单独运行串口中断接受函数或SendDataFlage函数,while循环语句就很顺畅的执行了,实在找不到那里出错了,求大家指点。#include <reg52.h> #include <string.h> #include <stdio.h> #include <intrins.h> #include <math.h> #include <stdarg.h> #include "usart.h" #include "wifi.h" sbit BUZZ = P2^3; //蜂鸣器控制引脚 sbit Pow = P1^0; sbit Pow1 = P0^0; unsigned char SendDataFlage = 0; unsigned char id; char Recive_table[20]=""; //接收缓冲最大20个字节 //unsigned char data Recive_table[20]; char Recive_state = 0; //接收完成标志 int main (void) { /********************功能初始化***********************/ Uart_Init();//串口初始化,波特率为9600 Pow = 1; ms_delay(1000) ; ms_delay(1000) ; //BUZZ=0; ms_delay(1000) ; ms_delay(1000) ; ms_delay(1000) ; //BUZZ=1; ES = 0; TI = 1; // printf("AT+CIPSTART=\"TCP\"\"192.168.1.2\"8080\r\n"); BUZZ=0; ms_delay(1000) ; // printf("AT+CIPSTART=\"TCP\"\"192.168.1.2\"8080\r\n"); //BUZZ=1; ms_delay(1000) ; // printf("AT+CIPSTART=\"TCP\"\"192.168.1.2\"8080\r\n"); //BUZZ=0; ms_delay(1000) ; ms_delay(1000) ; ms_delay(1000) ; // printf("AT+CIPSTART=\"TCP\"\"192.168.1.2\"8080\r\n"); BUZZ=1; ms_delay(1000) ; ms_delay(1000) ; ms_delay(1000) ; printf("AT+CIPSTART=\"TCP\"\"192.168.1.2\"8080\r\n"); //BUZZ=0; ms_delay(1000) ; printf("AT+CIPSEND=12\r\n"); ms_delay(1000) ; //BUZZ=1; printf("666666601ok\r\n"); //BUZZ=0; while(!TI); TI = 0; Recive_state = 0; //EA = 1; ES = 1; ms_delay(1000) ; ms_delay(1000) ; BUZZ=1; SendDataFlage=1; BUZZ=0; ms_delay(1000) ; BUZZ=1; start1: while(1) { ms_delay(100) ; if(SendDataFlage==1) { SendDataFlage=0; ES = 0; TI = 1; printf("AT+CIPSEND=12\r\n"); BUZZ=0; ms_delay(1000) ; printf("666666601ok\r\n"); while(!TI); TI = 0; Recive_state = 0; ES = 1; PS = 1; BUZZ=1; ms_delay(1000) ; ms_delay(1000) ; } if(Recive_state == 1) { if(strstr(Recive_table"6666666011")) { ES=0; TI=1; printf("AT+CIPSEND=15\r\n"); ms_delay(1000) ; printf("%c\n666666601on\r\n"); BUZZ =0; Pow = 0; Pow1 = 0; for(d=0;d<=5;d++) { for(i=0;i<=30;i++) { ms_delay(1000) ; } } Pow = 1; Pow1 = 1; printf("AT+CIPSEND=16\r\n"); ms_delay(1000) ; printf("%c\n666666601off\r\n"); //while(!TI) TI=0; Recive_state = 0; ES=1; SendDataFlage=1; BUZZ =1; goto start1; } else if(strstr(Recive_table"666666601ok")) { ES=0; TI=1; BUZZ =0; ms_delay(1000) ; BUZZ =1; while(!TI) TI=0; Recive_state = 0; ES=1; SendDataFlage=1; goto start1; } RI = 0; ES = 0; TI=0; Recive_state = 0; ES = 1; SendDataFlage=1; goto start1; } BUZZ=0; memset(Recive_table'\0'20); //memset(Recive_table020*sizeof(char)); Recive_state = 0; TI=0; ES=1; //打开接收标志位 PS = 1; SendDataFlage=1; ms_delay(1000) ; BUZZ = 1; goto start1; } } /****************************************************/ /****************************************************************** 函 数: void Uart_Interrupt() interrupt 4 功 能: 串口中断函数将收到的字符存到Recive_table[]数组中 参 数: 无 返回值: 无 *******************************************************************/ void Uart_Interrupt() interrupt 4 { static char i=0; //因为是一位一位接收,所以用static if(RI==1) { ES = 0; RI=0; Recive_table[i]=SBUF; i++; if((Recive_table[i-1] == '\n')) { Recive_table[i]='\0'; i=0; Recive_state = 1; } ES = 1; } if(TI) { TI = 0; ES = 1; } }

请问这2个MP2303的原理图那个是对的。

如题所示,我这里有2个基于MP2303 DC转DC的设计,上面那个我基于原理图打板之后没有5v输出,下面那个正在打板中,不知道这2个原理图那个有问题,求指点。