code: async def drop_tip(self, mount, home_after=True):
          
          instr = self._attached_instruments[mount]
          assert instr
          assert instr.has_tip, 'Cannot drop tip without a tip attached'
          self._log.info("Dropping tip off from {}".format(instr.name))
          plunger_ax = Axis.of_plunger(mount)
          droptip = instr.config.drop_tip
          bottom = instr.config.bottom
          self._backend.set_active_current(plunger_ax,
                                           instr.config.plunger_current)
          await self._move_plunger(mount, bottom)
          self._backend.set_active_current(plunger_ax,
                                           instr.config.drop_tip_current)
          await self._move_plunger(
              mount, droptip, speed=instr.config.drop_tip_speed)
          await self._shake_off_tips(mount)
          self._backend.set_active_current(plunger_ax,
                                           instr.config.plunger_current)
          instr.set_current_volume(0)
          instr.remove_tip()
          if home_after:
              safety_margin = abs(bottom-droptip)
              async with self._motion_lock:
                  smoothie_pos = self._backend.fast_home(
                      plunger_ax.name.upper(), safety_margin)
                  self._current_position = self._deck_from_smoothie(smoothie_pos)
              await self._move_plunger(mount, safety_margin)
docs: Drop tip at the current location
  
          :param Mount mount: The mount to drop a tip from
          :param bool home_after: Home the plunger motor after dropping tip. This
                                  is used in case the plunger motor skipped while
                                  dropping the tip, and is also used to recover
                                  the ejector shroud after a drop.