OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 11968|回复: 47

蓝宙TSL1401设计巡线

[复制链接]

2

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
55
金钱
55
注册时间
2014-7-16
在线时间
0 小时
发表于 2014-7-16 20:16:44 | 显示全部楼层 |阅读模式
5金钱
在ADC库函数的例子里面加了下面这个函数来实现在白纸上寻找黑线位置,CCD总是有问题找不到,劳烦各路大神帮忙看一下
u16 CCD_Find(void)
{
u16 ao_d[128];
u16 n,max,min,mid,find=0,bla=0;
GPIO_SetBits(GPIOB,GPIO_Pin_13);
delay_us(50);
GPIO_SetBits(GPIOB,GPIO_Pin_14);
    delay_us(50);
GPIO_ResetBits(GPIOB,GPIO_Pin_13);
delay_us(50);
for(n=0;n<129;n++)
{
GPIO_ResetBits(GPIOB,GPIO_Pin_14);
   delay_us(50);
GPIO_SetBits(GPIOB,GPIO_Pin_14);
        delay_us(50);
}
GPIO_ResetBits(GPIOB,GPIO_Pin_14);
delay_us(50);
GPIO_SetBits(GPIOB,GPIO_Pin_13);
delay_us(50);
GPIO_SetBits(GPIOB,GPIO_Pin_14);
    delay_us(50);
GPIO_ResetBits(GPIOB,GPIO_Pin_13);
delay_us(50);
for(n=0;n<128;n++)
{
ao_d[n]=Get_Adc_Average(ADC_Channel_1,10);
UART0_TX_Oscilloscope(ao_d[n]/10,0);
GPIO_ResetBits(GPIOB,GPIO_Pin_14);
   delay_us(50);
GPIO_SetBits(GPIOB,GPIO_Pin_14);
        delay_us(50);
}
GPIO_ResetBits(GPIOB,GPIO_Pin_14);
delay_us(50);
GPIO_SetBits(GPIOB,GPIO_Pin_14);
max=0;
for(n=0;n<128;n++)
{
if(max<ao_d[n])
   max=ao_d[n];
}
min=max;
for(n=0;n<128;n++)
{
if(min>ao_d[n])    
   min=ao_d[n];
}
mid=(max+min)/2;
for(n=128;n>0;n--)
{
if(ao_d[n-1]<mid)
{
 find=n;
 bla++;
}
}
bla=bla/2;
find=find+bla;
return find;
}

实验17 ADC实验.zip

2.86 MB, 下载次数: 532

最佳答案

查看完整内容[请看2#楼]

做了一点修改并添加了备注
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
55
金钱
55
注册时间
2014-7-16
在线时间
0 小时
 楼主| 发表于 2014-7-16 20:16:45 | 显示全部楼层
做了一点修改并添加了备注

实验17 ADC库函数.rar

2.35 MB, 下载次数: 919

回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-7-16 22:46:54 | 显示全部楼层
帮顶 .....
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

2

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
55
金钱
55
注册时间
2014-7-16
在线时间
0 小时
 楼主| 发表于 2014-7-17 09:32:46 | 显示全部楼层
忘了说了,CCD用的是蓝宙的TSL1401,我那个程序把SI接在PB13,CLK接在PB14,AO输出到PA1,VCC接板子上的3.3V,马上要交工了,可是总是不能正常使用,跪求高人指点
回复

使用道具 举报

2

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
53
金钱
53
注册时间
2013-10-2
在线时间
0 小时
发表于 2014-7-30 14:47:12 | 显示全部楼层
回复【3楼】彩笔:
---------------------------------
怎么样?楼主,解决了么?解决了能否给我一份你的程序啊,非常感谢!
回复

使用道具 举报

2

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
55
金钱
55
注册时间
2014-7-16
在线时间
0 小时
 楼主| 发表于 2014-8-6 19:42:20 | 显示全部楼层
回复【4楼】冷枫林:
---------------------------------
嗯,我之前是曝光时间外加程序有点问题,我把我程序放在下面
回复

使用道具 举报

2

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
55
金钱
55
注册时间
2014-7-16
在线时间
0 小时
 楼主| 发表于 2014-8-6 19:43:52 | 显示全部楼层
线性CCD

实验17 ADC实验2.rar

2.24 MB, 下载次数: 7481

回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-8-6 22:49:03 | 显示全部楼层
回复【6楼】彩笔:
---------------------------------
谢谢分享
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

2

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
55
金钱
55
注册时间
2014-7-16
在线时间
0 小时
 楼主| 发表于 2014-8-7 11:18:52 | 显示全部楼层
回复【7楼】正点原子:
---------------------------------
只是很简单的程序,能给大家带来帮助就好
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-8-9 00:50:10 | 显示全部楼层
回复【8楼】彩笔:
---------------------------------
谢谢
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

0

主题

17

帖子

0

精华

新手上路

积分
37
金钱
37
注册时间
2014-9-17
在线时间
0 小时
发表于 2014-9-20 15:58:41 | 显示全部楼层
你好,已经下载了你的程序,你的这个程序能用蓝宙的上位机观测吗??
回复

使用道具 举报

2

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
55
金钱
55
注册时间
2014-7-16
在线时间
0 小时
 楼主| 发表于 2014-9-20 16:06:40 | 显示全部楼层
回复【10楼】byond03:
---------------------------------
直接用示波器就可以看
回复

使用道具 举报

0

主题

17

帖子

0

精华

新手上路

积分
37
金钱
37
注册时间
2014-9-17
在线时间
0 小时
发表于 2014-9-21 09:03:54 | 显示全部楼层
回复【11楼】彩笔:
---------------------------------
示波器??是用虚拟示波器吗?那个软件?
回复

使用道具 举报

0

主题

17

帖子

0

精华

新手上路

积分
37
金钱
37
注册时间
2014-9-17
在线时间
0 小时
发表于 2014-9-21 10:26:16 | 显示全部楼层
回复【11楼】彩笔:
---------------------------------
额,又发现了一个问题,你是用Jlink下载吗,为什么你的程序我试了很多次Jlink都下不进去?
回复

使用道具 举报

2

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
55
金钱
55
注册时间
2014-7-16
在线时间
0 小时
 楼主| 发表于 2014-9-21 14:16:49 | 显示全部楼层
回复【13楼】byond03:
---------------------------------
对啊,就是战舰板子的Jlink,驱动就用的光盘里面的
回复

使用道具 举报

0

主题

17

帖子

0

精华

新手上路

积分
37
金钱
37
注册时间
2014-9-17
在线时间
0 小时
发表于 2014-9-21 15:27:37 | 显示全部楼层
回复【14楼】彩笔:
---------------------------------
额,Jlink的问题解决了,你说的示波器是用串口示波器模拟吗?这样就能实现上位机的功能了是吗?还有,你的这个程序只是把CCD的AD采集了,提取黑线的话还是需要进一步计算的是吗?
回复

使用道具 举报

2

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
55
金钱
55
注册时间
2014-7-16
在线时间
0 小时
 楼主| 发表于 2014-9-21 17:02:34 | 显示全部楼层
回复【15楼】byond03:
---------------------------------
可以用串口显示工具查看,调用函数的返回值就是黑线中心位置
回复

使用道具 举报

2

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
55
金钱
55
注册时间
2014-7-16
在线时间
0 小时
 楼主| 发表于 2014-9-22 09:42:04 | 显示全部楼层
回复【15楼】byond03:
---------------------------------
我新上传的程序加了备注
回复

使用道具 举报

2

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
55
金钱
55
注册时间
2014-7-16
在线时间
0 小时
 楼主| 发表于 2014-9-22 09:43:27 | 显示全部楼层
回复【15楼】byond03:
---------------------------------
你看的时候可以直接把输入ADC的线接到示波器上看起来就很直观了
回复

使用道具 举报

0

主题

17

帖子

0

精华

新手上路

积分
37
金钱
37
注册时间
2014-9-17
在线时间
0 小时
发表于 2014-9-22 16:44:15 | 显示全部楼层
回复【19楼】彩笔:
---------------------------------
好的,非常感谢,等下我去实验室看一下
回复

使用道具 举报

0

主题

17

帖子

0

精华

新手上路

积分
37
金钱
37
注册时间
2014-9-17
在线时间
0 小时
发表于 2014-9-22 21:34:38 | 显示全部楼层
还有一个问题,那个串口的代码是怎么发送的,我没太看明白,我想用串口示波器再看一下那个波形
回复

使用道具 举报

2

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
55
金钱
55
注册时间
2014-7-16
在线时间
0 小时
 楼主| 发表于 2014-9-22 21:43:33 | 显示全部楼层
刚才在开会没看到,我发个我用的串口示波器给你,这个观察起来还是比较方便,但是有可能会引起你电脑的串口失控,如果你用USE鼠标的话记得保存好文件后使用
回复

使用道具 举报

2

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
55
金钱
55
注册时间
2014-7-16
在线时间
0 小时
 楼主| 发表于 2014-9-22 21:48:02 | 显示全部楼层
直接在主函数里用UART0_TX_Oscilloscope(int32_t Data , uint8_t channel),通道用0就可以,插战舰板的USB,还要记得先装串口驱动

串口示波器1.0.0.2.exe

472 KB, 下载次数: 5675

回复

使用道具 举报

2

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
55
金钱
55
注册时间
2014-7-16
在线时间
0 小时
 楼主| 发表于 2014-9-22 21:50:15 | 显示全部楼层
回复【21楼】byond03:
---------------------------------
直接用战舰光盘里的串口助手也行
回复

使用道具 举报

0

主题

17

帖子

0

精华

新手上路

积分
37
金钱
37
注册时间
2014-9-17
在线时间
0 小时
发表于 2014-9-23 19:38:36 | 显示全部楼层
回复【23楼】彩笔:
---------------------------------
发送的数据是什么呢?是ao_d[n]数组里的数据吗?
回复

使用道具 举报

2

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
55
金钱
55
注册时间
2014-7-16
在线时间
0 小时
 楼主| 发表于 2014-9-24 14:32:04 | 显示全部楼层
回复【25楼】byond03:
---------------------------------
嗯,这么看虽然会拖慢你程序,但是很直观
回复

使用道具 举报

0

主题

17

帖子

0

精华

新手上路

积分
37
金钱
37
注册时间
2014-9-17
在线时间
0 小时
发表于 2014-9-25 12:29:02 | 显示全部楼层
回复【26楼】彩笔:
---------------------------------
恩,现在已经能调出那个波,下一步处理实时的ao然后控制舵机了,但是没找到太多资料,你那边有接下来的控制程序吗?
回复

使用道具 举报

0

主题

17

帖子

0

精华

新手上路

积分
37
金钱
37
注册时间
2014-9-17
在线时间
0 小时
发表于 2014-9-25 20:36:11 | 显示全部楼层
回复【26楼】彩笔:
---------------------------------
还有一点,我的车是骑着线走得,而且线比较窄,只有1.7cm
回复

使用道具 举报

2

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
55
金钱
55
注册时间
2014-7-16
在线时间
0 小时
 楼主| 发表于 2014-9-25 21:08:29 | 显示全部楼层
回复【27楼】byond03:
---------------------------------
这个要看你车的型号,还有电机,码盘,舵机等各个的参数,控制程序要根据你车的实际情况来写,至于黑线1.7cm也不算窄了,CCD应该可以比较好的识别出来,安装的时候注意一下角度就行了
回复

使用道具 举报

2

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
55
金钱
55
注册时间
2014-7-16
在线时间
0 小时
 楼主| 发表于 2014-9-25 21:12:40 | 显示全部楼层
回复【28楼】byond03:
---------------------------------
你要是想要闭环控制,我有个PID的程序你可以拿去改改,看能用不,我明天传上来,封装好的,调参数就行
回复

使用道具 举报

0

主题

17

帖子

0

精华

新手上路

积分
37
金钱
37
注册时间
2014-9-17
在线时间
0 小时
发表于 2014-9-25 21:30:52 | 显示全部楼层
回复【30楼】彩笔:
---------------------------------
恩。我用的是飞卡的A车模做,正在研究那个偏移量的问题,想先试试闭环控制。。
回复

使用道具 举报

2

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
55
金钱
55
注册时间
2014-7-16
在线时间
0 小时
 楼主| 发表于 2014-9-26 14:39:49 | 显示全部楼层
PID调节

PID.rar

1.76 KB, 下载次数: 774

回复

使用道具 举报

2

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
55
金钱
55
注册时间
2014-7-16
在线时间
0 小时
 楼主| 发表于 2014-9-26 14:40:43 | 显示全部楼层
回复【31楼】byond03:
---------------------------------
P,I,D三个参数一个一个调
回复

使用道具 举报

0

主题

17

帖子

0

精华

新手上路

积分
37
金钱
37
注册时间
2014-9-17
在线时间
0 小时
发表于 2014-10-4 13:22:51 | 显示全部楼层
回复【33楼】彩笔:
---------------------------------
又来请教你了,我在看蓝宙的主程序的时候,发现他们用了一些中断,包括ccd的中断,想问下你在车行走的时候需要用中断吗?什么时候要用到?还想请你解释一下
回复

使用道具 举报

2

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
55
金钱
55
注册时间
2014-7-16
在线时间
0 小时
 楼主| 发表于 2014-10-4 16:40:50 | 显示全部楼层
回复【34楼】byond03:
---------------------------------
智能车的话,如果处理器允许用可以用中断,但是只是绕圈跑就没必要用中断,一般情况下要实现几种功能的话会设置中断,比如走直道时用一种调速方案,当检测到进入弯道后,触发中断切换到第二种调速方案
回复

使用道具 举报

0

主题

17

帖子

0

精华

新手上路

积分
37
金钱
37
注册时间
2014-9-17
在线时间
0 小时
发表于 2014-10-4 19:46:58 | 显示全部楼层
回复【35楼】彩笔:
---------------------------------
恩,我现在要实现的一点就是对弯道的检测,然后降到一定速度,就是直道和弯道是两个定值的速度(初步先不打算用pid调直流电机了),但是要怎么检测车进入弯道呢?还是靠偏移量的多少吗?就说这个外部中断是个怎样的量触发呢?
回复

使用道具 举报

0

主题

17

帖子

0

精华

新手上路

积分
37
金钱
37
注册时间
2014-9-17
在线时间
0 小时
发表于 2014-10-4 19:59:15 | 显示全部楼层
回复【35楼】彩笔:
---------------------------------
再就是我看了下pid调舵机的算法,怎么感觉就是一个公式来计算占空比的变化啊,但是偏移量不就是|find-64|吗?这个要怎么用呢?
回复

使用道具 举报

2

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
55
金钱
55
注册时间
2014-7-16
在线时间
0 小时
 楼主| 发表于 2014-10-4 20:37:33 | 显示全部楼层
回复【37楼】byond03:
---------------------------------
PID是一个微积分的过程,例如我们想从1调到10,如果直接把舵机转一个固定值,让它每次加4直到超过10到达13,然后又得回调,让它减4变成9,这样的话你是一直在9和13之间变化,车子就会蛇形前进,左右摇摆,用PID的话,它有一个逐渐靠拢的趋势,例如第一次加了4以后,它会发现5和10之间的差距已经没有1和10之间的差距大了,那么下一次就加个小一点的数字3,逐渐靠拢,车子行进的路线就会比较平和,转弯会比较自然,不会转过度
回复

使用道具 举报

2

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
55
金钱
55
注册时间
2014-7-16
在线时间
0 小时
 楼主| 发表于 2014-10-4 20:45:21 | 显示全部楼层
回复【36楼】byond03:
---------------------------------
检测弯道就要靠偏移量了,最好是能记录车子在直道上走了多远,在它快要进入弯道前,将判定值做一个调整,尽量避免它在直道上误以为自己进入了弯道
回复

使用道具 举报

0

主题

17

帖子

0

精华

新手上路

积分
37
金钱
37
注册时间
2014-9-17
在线时间
0 小时
发表于 2014-10-4 20:47:01 | 显示全部楼层
temp= Kp*error+Kd*(error+pre_error-2*last_error);舵机的话如果用pd调,error和error+pre_error-2*last_error根据车的情况来说分别是什么呢,尤其是对后者即将的偏差来说
回复

使用道具 举报

0

主题

17

帖子

0

精华

新手上路

积分
37
金钱
37
注册时间
2014-9-17
在线时间
0 小时
发表于 2014-10-4 20:48:43 | 显示全部楼层
回复【39楼】彩笔:
---------------------------------
我的车是骑线走得,感觉偏移就是find-64嘛,这个值要怎么在处理下呢?
回复

使用道具 举报

2

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
55
金钱
55
注册时间
2014-7-16
在线时间
0 小时
 楼主| 发表于 2014-10-4 20:51:25 | 显示全部楼层
回复【40楼】byond03:
-------------------------------
这个我也不太懂,我传的那个函数,就是设定目标值,也就是你要得到的位置,再加上设定参数,使用你想要的调节方式,这些不能完全看代码,最好实际调一下车,根据实际情况找适合你的参数
回复

使用道具 举报

2

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
55
金钱
55
注册时间
2014-7-16
在线时间
0 小时
 楼主| 发表于 2014-10-4 20:55:29 | 显示全部楼层
回复【41楼】byond03:
---------------------------------
你要得到的是64,但是舵机调方向要有一个过程,就像汽车转弯一样,考驾校的时候有个科目是倒车入库,开始的时候,我们把方向盘转到最大,但是车子位置逐渐的变化以后,方向盘就要随之往回松,就是这个道理
回复

使用道具 举报

0

主题

17

帖子

0

精华

新手上路

积分
37
金钱
37
注册时间
2014-9-17
在线时间
0 小时
发表于 2014-10-4 20:58:52 | 显示全部楼层
回复【43楼】彩笔:
---------------------------------
恩,好的,我知道了。我试试看吧
回复

使用道具 举报

火星人1998 该用户已被删除
发表于 2017-2-3 23:20:50 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

0

主题

36

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
218
金钱
218
注册时间
2015-9-29
在线时间
81 小时
发表于 2017-8-15 15:13:30 | 显示全部楼层
谢谢, 学习
回复

使用道具 举报

0

主题

4

帖子

0

精华

新手上路

积分
26
金钱
26
注册时间
2017-9-5
在线时间
5 小时
发表于 2017-9-8 00:09:37 | 显示全部楼层
请问有没有miniSTM32用的版本?
回复

使用道具 举报

0

主题

4

帖子

0

精华

新手上路

积分
26
金钱
26
注册时间
2017-9-5
在线时间
5 小时
发表于 2017-9-10 17:16:58 | 显示全部楼层
彩笔 发表于 2014-7-17 09:32
忘了说了,CCD用的是蓝宙的TSL1401,我那个程序把SI接在PB13,CLK接在PB14,AO输出到PA1,VCC接板子上的3.3 ...

看了下代码,好像SI接在PB12,CLK接在PB10上
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-19 04:32

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表