ATmega16智能遥控小车

news/2024/12/29 18:51:40/

AVR-ATmega16智能遥控小车

AVR单片机相信不少的伙伴在大学的电设课中接触过,不像51单片机和32单片机的资料这么多,但是学校又要求去学,还要设计结题项目,这是最头疼的。该项目可以作为AVR单片的学习的参考,同时也是我们的结课题目:智能遥控小车。

目录

  • AVR-ATmega16智能遥控小车
  • 智能遥控小车
    • 准备
    • 硬件
    • 实现过程
      • 一、驱动方面无需多言
      • 二、蓝牙方面
      • 三、超声波
      • 四、带AB相的编码电机
      • 五、红外线检测黑线
    • 代码

智能遥控小车

小车也仅仅只是一个半入门级别的作品。需要实现对功能如下:

  • 使用ATmega系列单片机通过遥控的方式实现小车的前进、后退、左转、右转等操作
  • PWM实现电机的转速控制,编码电机返回转速,编写PID程序实现电机转速的控制,实现定速巡航行驶
  • 实现自动寻黑线行驶功能。
  • 实现自动防碰撞模式行驶。

准备

从题目出发确定以下方向:

  • 采用蓝牙对小车进行遥控,通过手机端的蓝牙调试助手进行遥控
  • 通过电机驱动利用PWM进行基本行驶操作
  • 编码电机实现对速度的采集,并通过PID运算将速度保持在一个稳定值。
  • 利用红外线寻黑线
  • 利用超声波防碰撞

总体而言题目算是比较简单但又考验对单片机的综合应用能力。

硬件

  • 主控采用ATmega16
  • 驱动采用TB6612FNG
  • 蓝牙采用经典的HC-05
  • 编码电机
  • 三路红外检测黑线
  • HC-SR04超声波

实现过程

一、驱动方面无需多言

逻辑如下:
TB6612FNG

二、蓝牙方面

相信熟悉STM32或者51开发的同学对蓝牙不会陌生,对于蓝牙的收发程序也是得心应手。
但对于ATmega16而言值得注意的对芯片晶振的选择

ATmega16默认的是内部的1MHZ的晶振,无法满足蓝牙的波特率需求,因此需要将ATmega16的晶振设置为内部8MHZ的晶振,并在程序中适配蓝牙的波特率。

三、超声波

如果你使用的是HC-SR04,那么恭喜你中奖了,对于该模块的使用我是一言难尽,实际上在较为适合的距离下该模块的精度还是不错的。但是他有一个致命的缺点(当然也可能是我们的实验室的条件不行,具体情况每个地方都有所不同),那就是在超出量程后会间歇性的报给你错误的方波。
一旦你捕捉到了这些错误的方波,那么你的程序就开始失控了。我并没有什么好的解决办法,只能人为调控,使得障碍物在超声波的检测范围内。因此如果你的预算充足的话,可以购入更好的超声波模块。

四、带AB相的编码电机

AB相的编码电机可以检测轮子的转动方向:正转或者反转。因此对正反向的速度有要求的可以选择,虽然我买的也是AB相,的但实际上并没有用到这个功能,仅检测了一个相位,只测量了速度。
具体的逻辑很简单,计算一秒钟内高电平的次数(一秒钟可以根据自己的要求减少),根据每一个轮子的不同,脉冲次数对应的圈数也不同。再根据轮胎半径,

五、红外线检测黑线

对于红外线循迹,市面上大致分为两种,一种为直接返回高低电平,一种为返回电压值。前者在编写程序上极为简单,但是做过的同学的都知道,爬在地上一点点的调节红外的感受。后者再硬件上就省了不少麻烦,你不用调节,也无法调节,位置对好就ok,但是在程序上就需要你耗费一点时间了。两者取舍还要看具体的情况。

代码

代码放在了我的Github账号下,仅供参考,如需自取。随时欢迎来讨论沟通。
点击这里Github网址


http://www.ppmy.cn/news/879992.html

相关文章

Android智能遥控器DEMO

前言:前段时间接手了公司几个智能控制的APP的开发工作。在开发的过程中遇到了许多的关于App的问题-架构,代码逻辑,填了许多坑(当然有人把我拉出来啦!)。为了避…

基于esp32的智能遥控器

文章目录 一、演示视频二、程序框架三、硬件设计四、模块介绍1、语音识别模块离线语音识别优化语音识别 2、BLE模块3、MQTT模块3.1、命令下发3.2、设备属性上报3.3、平台查询设备属性3.4、应用侧接口 4、音频播放模块4.1、播放本地mp34.3、文本转语音 5、红外模块5.1、红外发射…

Qt开发——重写PaintEvent 绘制横向波形图

Qt开发——重写PaintEvent 绘制横向波形图 输入的数据: 输入数据为1维数组,其中数组下标代表索引,数组值代表强度值 输出形式 将传统的X轴放在左侧,Y轴放在上侧 效果演示 代码显示 .h文件 #ifndef CURVEWAVEWIDGET_H #defi…

C# WPF实现动画渐入暗黑明亮主题切换效果

C# WPF实现动画渐入暗黑明亮主题切换效果 效果图如下最近在Bilibili的桌面端看到一个黑白主题切换的效果感觉,挺有意思。于是我使用WPF尝试实现该效果。 主要的切换效果,基本实现不过还存在一些小瑕疵,比如字体等笔刷不能跟随动画进入进行切换。因为Bilibili的客户端是用el…

draco 解压

参照google源码中的示例draco_decoder,draco_encoder基本大概可以了解到Draco的使用逻辑&#xff1a; #include <core/decoder_buffer.h> #include <io/mesh_io.h>#include <fstream> #include <iostream>using namespace draco; using namespace std…

draco3D轻量化技术在Unity3D中应用

draco3D轻量化技术在Unity3D中应用 之前完成了draco3D对glb模型轻量化的处理工作&#xff0c;并完成了正常的加载。先进行draco3D在U3D中的应用。 方法一&#xff1a;将.obj模型压缩成.drc、.bytes类型再做加载。使用工具地址&#xff1a;https://github.com/google/draco.下…

Draco节点安装

Draco节点安装安装文档 Draco节点支持的操作系统 ubuntu16.04以上,centos7以上;4月30号起,将支持window系统及Linux更多版本;将来会支持更多硬件。带宽配置越高,贡献值越大,挖矿奖励越多。 Draco节点下载链接 百度云链接: https://pan.baidu.com/s/18-TJuH2YucMqiw1…

Draco嵌入式AI开发板使用手册V0.1.1

教学资源&#xff1a; K210入门教学&#xff08;基于Draco天龙座开发板&#xff09; 1. 硬件资源介绍 Draco嵌入式AI开发板&#xff0c;由AI模块和外设底板构成。开发板集成了摄像头、LCD屏幕、麦克风和WIFI模块等丰富外设&#xff0c;且板载拓展口与树莓派兼容。利用Type-C…